Hibernate中如何实现分页查询?代码举例讲解

在Hibernate中,分页查询可以通过Query对象的setFirstResult()和setMaxResults()方法实现。主要步骤如下:

  1. 编写HQL查询语句:
String hql = "from Customer";
  1. 创建Query对象,并设置分页参数:
  • setFirstResult():设置查询的起始位置,索引从0开始。
  • setMaxResults():设置每页的记录条数。
Query query = session.createQuery(hql);
query.setFirstResult(3);     // 起始位置为第4条记录 
query.setMaxResults(5);     // 每页5条记录
  1. 执行查询并获取结果:
List<Customer> list = query.list();  
  1. 计算总记录数:
  • 需要执行查询语句count(*)获取总记录数。
String countHql = "select count(*) from Customer";  
Query countQuery = session.createQuery(countHql);
Long totalCount = (Long) countQuery.uniqueResult();
  1. 构建Page对象:
  • Page对象封装了分页查询的相关信息,方便前端展示。
Page<Customer> page = new Page<>(3, 5, totalCount, list); 

例如,前端可以:

  • page.getTotalCount():获取总记录数
  • page.getResult():获取当前页数据列表
  • page.getCurrentPage():获取当前页码
  • page.getPageSize():获取每页条数
  • 等等