Hibernate分页的两种实现方法
本文实例讲述了Hibernate分页的两种实现方法。分享给大家供大家参考,具体如下:
1. criteria分页
public Page getPage(int currentPage,int pageSize,Criterion...crts){
Criteria c=session.createCriteria(House.class);
List list=null;
for (int i = 0; i < crts.length; i++) {
c.add(crts[i]);
}
c.setProjection(Projections.rowCount());
int totalRecord=Integer.valueOf(c.uniqueResult().toString());
c.setProjection(null);
c.setFirstResult((pageSize)*(currentPage-1));
c.setMaxResults(pageSize);
list=c.list();
Page page=new Page();
page.setCurrentPage(currentPage);
page.setPageSize(pageSize);
page.setTotalRecord(totalRecord);
page.setList(list);
return page;
}
2. hql分页
public Page getPage(int currentPage,int pageSize,String hql,Object...args){
String countHql="select count(*) "+hql.substring(hql.indexOf("from"));
Session session=HibernateUtil.getInstance().getSession();
Query query=session.createQuery(countHql);
for (int i = 0; i < args.length; i++) {
query.setParameter(i, args[i]);
}
int totalRecord=Integer.valueOf(query.uniqueResult()+"");
query=session.createQuery(hql);
for (int i = 0; i < args.length; i++) {
query.setParameter(i, args[i]);
}
query.setFirstResult(pageSize*(currentPage-1));
query.setMaxResults(pageSize);
List list=(List)query.list();
Page page=new Page();
page.setCurrentPage(currentPage);
page.setPageSize(pageSize);
page.setTotalRecord(totalRecord);
page.setList(list);
return page;
}
希望本文所述对大家基于Hibernate框架的Java程序设计有所帮助。相关阅读:
微信企业号开发之微信考勤百度地图定位
基于UIControl控件实现ios点赞功能
浅析Javascript ES6中的原生Promise
C语言中获取和改变目录的相关函数总结
GridView控件实现数据的修改(第9节)
C#中的文件路径获取函数和文件名字获取函数小结
ORACLE EXP不能导出空表的原因分析及解决方法
C#开源的AOP框架--KingAOP基础
Win10系统分辨率不正确如何调整
java中使用双向链表实现贪吃蛇程序源码分享
解析Android横竖屏切换的问题
win7系统使用打印机设备提示缺少VSPRINT7.OCX的解决方法
PHP实现的通过参数生成MYSQL语句类完整实例
JQuery设置文本框和密码框得到焦点时的样式