`
xq30397022
  • 浏览: 12965 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

使用hibernate进行分页

阅读更多

首先创建一个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层自己根据情况去写吧~

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics