查询能够按结果集分2类:单个结果 和 数组 ; 其中,返回数组,在这个 数据库数据量随随便便就能上几十万的互联网时代大背景下,经常须要作分页处理, 因此这里就说一下单值和分页, 算是对上一篇"curd"的一些延伸java
好比,咱们须要查询数据库,统计一下app的当前注册人数, 此时咱们知道返回结果一定是"单行单列"的一个数值,那么能够用这种单值查询方式;数据库
使用uniqueResult()方法,它返回一个java.lang.Object对象,而且能保证返回的必定是一个单值对象,不然就会报错;若是返回0个对象,也会报错;因此咱们须要放到try-catch块中数组
Session session=null; try{ session= HibernateUtil.openSession(); String hql="select count(*) from Feedback"; long count= (long) session.createQuery(hql).uniqueResult(); System.out.println("get data ok"); }catch(Exception e){ e.printStackTrace(); throw new RuntimeException(e); }finally { session.close(); }
在这个互联网时代,动辄几十万的数据也是很是日常的事情了,每次查询所有加载是很不现实的。所以,作分页查询,不只节省db性能,带宽,流畅度上来了还能提高用户体验.session
hibernate的Query类下有两个方法能够帮咱们达到分页查询目的:setFirstResult(int num)和setMaxResults(int size); 前者的num是查询的起始记录数,好比从第3条开始查询,就是setFirstResult(3); 后者的size是查询结果集的大小,好比获取10条记录,那就是setMaxResults(10);app
//分页查询 String hql="from Feedback order by id desc"; List<Feedback> feedbacks=session.createQuery(hql).setFirstResult(1).setMaxResults(2).list();
其中: setFirstResult(int num)的num仍旧是由0开始的;性能
因而,配合着pageIndex,pageCount,很容易就能够获得分页请求代码,在上面代码的基础上修改一下就行:spa
//分页查询 String hql="from Feedback order by id desc"; int pageIndex=2,pageCount=10; List<Feedback> feedbacks=session.createQuery(hql).setFirstResult((pageIndex-1)*pageCount).setMaxResults(pageCount).list();
本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利;hibernate
本文出自:博客园--别问是谁code