dljd_048_hibernate_单表查询_mysql分页查询

一、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();
            }
        }
    }
}    

数据库数据信息截图:

  

测试结果截图(第一页):

  

测试结果截图(第二页):

  

测试结果截图(第三页):

  

测试结果截图(第四页):

  

测试结果截图(第五页):

  

测试每页显示三条记录的第四页截图如下:

  

猜你喜欢

转载自www.cnblogs.com/aeon/p/10106343.html