Hibernate检索方式 三

8 篇文章 0 订阅
7 篇文章 0 订阅

承接上文



@Test

   public void test6(){

         Session session = HibernateUtil.openSession();

        Transaction tx = session.beginTransaction();

             
//      //使用HQL分页

// Query query = session.createQuery("from Orders");
//     //setFirstResult()设置的参数表示下标  从0开始 表示第一个数据

//     query.setFirstResult(0);

//           //setMaxResults()设置每页显示的数据条数

//     query.setMaxResults(10);

//     List<Orders>list = query.list();

//           

//           for(Orders orders : list) {

//            System.out.println(orders);

//           }

              

              //使用QBC分页

       Criteria criteria = session.createCriteria(Orders.class);

       //setFirstResult()设置的参数表示下标  从0开始 表示第一个数据

      criteria.setFirstResult(0);

       //setMaxResults()设置每页显示的数据条数

       criteria.setMaxResults(10);

       List<Orders> list = criteria.list();

              
         for(Orders orders : list) {
		System.out.println(orders);

              }

              
              tx.commit();
              session.close();
       }






/*

        *   排序  使用HQL操作
        *     session.createQuery("fromStudent s order by s.stuid desc").list();
        *      升序:ASC  降序:desc
        * 
        *    使用QBC操作
        *    session.createCriteria(Student.class)   .addOrder(org.hibernate.criterion.Order.desc("stuid")).list();
        *desc("字段")根据提供的字段进行降序
        * */


	@Test
       public void test5(){

          Session session = HibernateUtil.openSession();

           Transaction tx = session.beginTransaction();
       
  //使用HQL进行排序
//      List<Student>list = session.createQuery("from Student s order by s.stuiddesc").list();         
//       for(Student student : list) {
//              System.out.println(student);
//           }

              

    //使用QBC进行排序

    	 List<Student> list = session.createCriteria(Student.class)          .addOrder(org.hibernate.criterion.Order.desc("stuid")).list();

  	    for(Student student : list) {

                System.out.println(student);

              }

              tx.commit();
              session.close();
       }




/* 
        * 多态检索
        *   
        *   因为session.createQuery("from java.lang.Object").list();检索的是object 它就会返回所有配置了以下文件
        *   <mappingresource="com/bdqn/pojo/Orders.hbm.xml" />
	 *    <mappingresource="com/bdqn/pojo/Student.hbm.xml" />

        *    对象数据全部返回
        * 
       */


	@Test
       public void test4() {

 	Session session = HibernateUtil.openSession();

      Transaction tx = session.beginTransaction();
 
       List<Object> list = session.createQuery("from java.lang.Object").list();

	 for(Object object : list) {

                System.out.println(object);
              }
              
              tx.commit();
              session.close();
 
       }


多表查询

l 连接

n 交叉连接

u select * from A,B;

n 内连接:查询的是两个表的交际

n Select * from A inner join B on A.字段 = B.字段



实例代码:

  //内连接和迫切内连接

   @Test
  public void test11(){

      Session session = HibernateUtil.openSession();

      Transaction tx = session.beginTransaction();

              

        //内连接   sql: select* from Student s inner join orders o on s.stuid=o.cid

	// Queryquery = session.createQuery("from Student s inner join s.orders");

//      List<Object[]>list = query.list();
//           
//      for(Object[] object : list) {
//            System.out.println(Arrays.toString(object));
//           }

              

              Query
query = session.createQuery("select distinct s from Student s innerjoin" +"fetch s.orders");

         List<Student> list = query.list();

              System.out.println(list);
              tx.commit();
              session.close();
       }

内连接和迫切内连接的区别?

内连接查询:将数据封装到一个list<Object[]>中

迫切内连接:将数据封装到一个List中,但是迫切内连接,会得有重复记录,需要使用distinct排重

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值