使用hibernate进行分页

来源:互联网 发布:python中while的用法 编辑:程序博客网 时间:2024/04/30 23:02

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

原创粉丝点击