【Java】Hibernate(三)Query接口实现分页查询

【HQL简介】

     Hibernate Query Language 是面向对象的查询语言,它和SQL相似,提供了丰富灵活的查询能力。在Hibernate提供的各种检索方式中,HQL是使用最广的一种检索方式。介绍完Hibernate的映射,会再详细介绍HQL。

【分页查询】

     前提:
     User类、关联映射文件和Hibernate配置文件都已经写好。

     实现基本步骤:
     1.session创建Query查询,引入Query接口。
     2.设置分页查询的初始地址。
     3.设置每页查询的数据个数。
     4.使用list保存分页查询的数据。
     5.使用迭代器打印出list中所有数据。
     
package com.bjpowernode.hibernate;

import java.util.Iterator;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;


//实现query接口,使用 hql进行分页查询
public void testQuery(){
		Session session =null;
		try{
			session=HibernateUtils.getSession();
			session.beginTransaction();
			
			//从User 类查询
			Query query=session.createQuery("from User");
			//设置查询的初始地址为1.
			query.setFirstResult(1);
			//设置每页查询的数据个数为2
			query.setMaxResults(2);
			//使用list保存分页查询的数据
			List userList=query.list();
			//使用迭代器打印出list中所有数据
			for (Iterator iter=userList.iterator(); iter.hasNext();){
				User user=(User)iter.next();
				System.out.println("id="+ user.getId() + "name="+user.getName());			
			}
			session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally{
			HibernateUtils.closeSession(session);
		}
	}

     执行过后,Hibernate打出的SQL语句如下:
Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.password as password0_, user0_.createTime as createTime0_, user0_.expireTime as expireTime0_ from User user0_ limit ?, ?
id=4028168160bacd670160bace031d0001name=丁满
id=4028168160bad6650160bad6e2f10001name= 彭彭

     我们可以看出MySQL中用limit来限制每页个数。


【小结】

     HQL实现分页查询很方便,HQL还有很多实用便捷的查询功能,后续博客见~


版权声明:本文为W15732624773原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。