一、hibernate中实现mysql分页查询示例
package edu.aeon.hibernate.test; import java.util.List; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import edu.aeon.aeonutils.hibernate.getsessionutil.GetSessionUtil; import edu.aeon.beans.Student; /** * [说明]:分页查询 * @author aeon * */ public class TestQueryByPage { @Test public void testHqlQueryByPage() { Transaction transaction=null; Session session=null; try { session = GetSessionUtil.getSession(); transaction=session.getTransaction(); transaction.begin(); // 第一种动态参数赋值[start] String hql="from Student"; int pageNo=1;//第一页 int pageSize=2;//每页显示两条 int pageIndex=(pageNo-1)*pageSize; //根据传进来的页数和每页显示的记录数计算出该页的其实记录 List<Student> stuList= session.createQuery(hql) .setFirstResult(pageIndex) .setMaxResults(pageSize) .list(); //[/end] for (Student stu : stuList) { System.out.println(stu); } System.out.println("hql查询!"); transaction.commit(); } catch (Exception e) { e.printStackTrace(); //事物的回滚操作 transaction.rollback(); }finally{ /* * 其实这种getCurrentSession获取到的session我们无需手动关闭 * 因为当事务提交或者回滚的时候已经做了关闭session操作 * 而用openSession获取到的session我们一定要用手动去关闭 * */ if(null!=session){ session.close(); } } } }
数据库数据信息截图:
测试结果截图(第一页):
测试结果截图(第二页):
测试结果截图(第三页):
测试结果截图(第四页):
测试结果截图(第五页):
测试每页显示三条记录的第四页截图如下: