首先,使用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);