首先创建一个PageBean,代码如下:
public class Page {
private int totalpages;//总页数
private int currentpage;//当前页
private int pagesize =10;//每页显示个数(可以不写死,自由设定,根据需求而定)
private int totalrows;//总条数
private List date = new ArrayList();//当前存放对象
public Page() {
super();
// TODO Auto-generated constructor stub
}
public Page(int totalpages, int currentpage, int pagesize, int totalrows,
List date) {
super();
this.totalpages = totalpages;
this.currentpage = currentpage;
this.pagesize = pagesize;
this.totalrows = totalrows;
this.date = date;
}
public int getTotalpages() {
return this.totalrows%this.pagesize==0?this.totalrows/this.pagesize:this.totalrows/this.pagesize+1;
}
public void setTotalpages(int totalpages) {
this.totalpages = totalpages;
}
public int getCurrentpage() {
return currentpage;
}
public void setCurrentpage(int currentpage) {
this.currentpage = currentpage;
}
public int getPagesize() {
return pagesize;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
/**
* @return the totalrows
*/
public int getTotalrows() {
return totalrows;
}
public void setTotalrows(int totalrows) {
this.totalrows = totalrows;
}
public List getDate() {
return date;
}
public void setDate(List date) {
this.date = date;
}
/**
* 上一页
*/
public int getPrevPage() {
if(getCurrentpage() == 1)
return currentpage;
else
return currentpage - 1;
}
/**
* 下一页
*/
public int getNextPage() {
if(getCurrentpage()== this.totalpages)
return currentpage;
else
return currentpage + 1;
}
//第一页
public int getFirstPage(){
return 1;
}
//最后页
public int getLastPage(){
return totalpages;
}
}
Dao层处理方法有2中,第一种是hibernate独立分页,第二种是hibernate注入spring后利用getHibernateTempl()方法分页:
独立分页方法:
public page selectByPage(final int startpage, final int pagesize , String hql){
Page page = new Page();
Session ss = hibernateSessionFactory().getSessionFactory().getSession();
Query query = ss.createQuery(hql);
query.setFirstResult((startpage-1)*pagesize);
query.setMaxResults(pagesize);
page.setDate(query.list());
page.setTotalrows(query.list().size());
return page;
}
注入spring后的方法:
public Page selectBypage(final int startpage, String hql , final int pagesize) {
// TODO Auto-generated method stub
Page page = new Page();
page.setDate(getHibernateTemplate().executeFind(new HibernateCallback() {
public List<Dept> doInHibernate(Session s) throws HibernateException,
SQLException {
// TODO Auto-generated method stub
Query query = s.createQuery(hql);
query.setFirstResult((startpage-1)*pagesize);
query.setMaxResults(pagesize);
return query.list();
}
}));
int totalrows = getHibernateTemplate().find(hql).size();
page.setTotalrows(totalrows);
return page;
}
Biz层自己根据情况去写吧~