使用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层自己根据情况去写吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xq30397022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值