hibernate分页查询

首先,使用hibernate实现分页查询,
1.要编写HQL或者使用查询语句(注意HQL要调用session.createQuery/查询条件调用Session的createCriteria方法)
2.设置查询起始行数和最大查询行数、获取数据(setFirstReuslt/setMaxResult、query.list)
下面是具体的实现过程:
一。定义一个页面类

public class PageInfo<>{
	private List<E> rows;//数据集
	private Integer total;//总数
	private String hql;//sql
	private Integer pageSize=10;//一页多少条
	private Integer pageNumber=1;//当前页
	private Integer maxPageNum;//最大页
	public Map<String,Object>param;//存放其他信息  查询条件等等
	//设置getter/setter方法 构造函数等等 
	//注意一下这个方法 setTotal 重写内部方法
	public void setTotal(integer total){
	this.total=total;
	if(null==pageNumber||"undefined".equals(pageNumber)||pageNumer<=0){
pageNumber=1;
}else{
if(total%pageSize==0){
	if(pageNumber>total/pageSize){
		pageNumber=total/pageSize;
	}
	maxPageNum=total/pageSize;

}else{
if(pageNumber>total/pageSize+1){
	pageNumber=total/pageSize+1;
}
maxPageNum=total/pageSize+1;
}
}
}
}
//JAVA 代码块
//查询总数
Query countQuery=this.getsession().createQuery("select count(id) from test");
//查询列表
Query query =super.getSession().createQuery(" form ActionModel");
//获取总数
Long total=countQuert.uniqueResult();
pageinfo.setTotal(total.intValue());
//拿到最开始第一页
int start=(pageinfo.getPageNumber()-1)*pageinfo.getPageSize();
query.setFirstReuslt(start);
//每一页的条数
query.setMaxResult(pageinfo.getpageSize());
pageinfo.setRows(query.list);

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