在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

Hibernate分页的两种实现方法

2016-8-29 13:50| 发布者: zhangjf| 查看: 693| 评论: 0

摘要: 本文实例讲述了Hibernate分页的两种实现方法。分享给大家供大家参考,具体如下: 1. criteria分页 public Page getPage(int currentPage,int pageSize,Criterion...crts){Criteria c=session.createCriteria(House.c ...

本文实例讲述了Hibernate分页的两种实现方法。分享给大家供大家参考,具体如下:

1. criteria分页

  1. public Page getPage(int currentPage,int pageSize,Criterion...crts){
  2. Criteria c=session.createCriteria(House.class);
  3. List list=null;
  4. for (int i = 0; i < crts.length; i++) {
  5. c.add(crts[i]);
  6. }
  7. c.setProjection(Projections.rowCount());
  8. int totalRecord=Integer.valueOf(c.uniqueResult().toString());
  9. c.setProjection(null);
  10. c.setFirstResult((pageSize)*(currentPage-1));
  11. c.setMaxResults(pageSize);
  12. list=c.list();
  13. Page page=new Page();
  14. page.setCurrentPage(currentPage);
  15. page.setPageSize(pageSize);
  16. page.setTotalRecord(totalRecord);
  17. page.setList(list);
  18. return page;
  19. }
复制代码

2. hql分页

  1. public Page getPage(int currentPage,int pageSize,String hql,Object...args){
  2. String countHql="select count(*) "+hql.substring(hql.indexOf("from"));
  3. Session session=HibernateUtil.getInstance().getSession();
  4. Query query=session.createQuery(countHql);
  5. for (int i = 0; i < args.length; i++) {
  6. query.setParameter(i, args[i]);
  7. }
  8. int totalRecord=Integer.valueOf(query.uniqueResult()+"");
  9. query=session.createQuery(hql);
  10. for (int i = 0; i < args.length; i++) {
  11. query.setParameter(i, args[i]);
  12. }
  13. query.setFirstResult(pageSize*(currentPage-1));
  14. query.setMaxResults(pageSize);
  15. List<House> list=(List<House>)query.list();
  16. Page page=new Page();
  17. page.setCurrentPage(currentPage);
  18. page.setPageSize(pageSize);
  19. page.setTotalRecord(totalRecord);
  20. page.setList(list);
  21. return page;
  22. }
复制代码

希望本文所述对大家基于Hibernate框架的java程序设计有所帮助。

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-7 08:38

Copyright 2015-2025 djqfx

返回顶部