Hibernate 分页 查询

Hibernate 分页 查询


import java.util.List;

/**
 * 定义一个分页对象
 * @author acer
 *
 */
public class Pager {

    private int page;//当前页码
    private int pageTotal;//总页码
    private int rowsTotal;//总条数
    private int rows;//每页显示条数
        private String hql;//分页语句
    private List<?> list;//返回的数据集合


    public Pager() {
        super();
    }

    public String getHql() {
        return hql;
    }



    public void setHql(String hql) {
        this.hql = hql;
    }



    public int getPage() {
        return page;
    }
    public void setPage(int page) {
        this.page = page;
    }
    public int getPageTotal() {
        return pageTotal;
    }
    public void setPageTotal(int pageTotal) {
        this.pageTotal = pageTotal;
    }
    public int getRowsTotal() {
        return rowsTotal;
    }
    public void setRowsTotal(int rowsTotal) {
        this.rowsTotal = rowsTotal;
        pageTotal = rowsTotal%rows==0 ? rowsTotal/rows : rowsTotal/rows+1;
    }
    public int getRows() {
        return rows;
    }
    public void setRows(int rows) {
        this.rows = rows;
    }
    public List<?> getList() {
        return list;
    }
    public void setList(List<?> list) {
        this.list = list;
    }


    @Override
    public String toString() {
        return "Pager [list=" + list + ", page=" + page + ", pageTotal="
                + pageTotal + ", rows=" + rows + ", rowsTotal=" + rowsTotal
                + "]";
    }


}

UserDaoImpl.java中的分页方法代码:

public Pager pagerff(Pager p, Map<String, Object> pram) {
        Session session = null;
        Transaction tx = null;
        try {
            session=HibernateUtils.getSessionFactory().openSession();
            tx=session.beginTransaction();
            String hql=p.getHql();//获取查询语句
            Query query= session.createQuery(hql).setCacheable(true);
            //设置参数
            query.setProperties(pram);
            //查询具体数据
            int count=query.list().size();
            p.setRowsTotal(count);
            int nowPage=1;
            if(p.getPage()>0){
                nowPage=p.getPage();
            }
            //指定从那个对象开始查询,参数的索引位置是从0开始的,
            query.setFirstResult((p.getPage()-1)*p.getRows());
            //分页时,一次最多产寻的对象数
            query.setMaxResults(p.getRows());
            List<?> list1=query.list();
            p.setList(list1);
            tx.commit();

        } catch (Exception e) {
            e.printStackTrace();
            tx.rollback();
        }finally{
            session.close();
        }
        return  p;
    }

这个分页里主要使用了两个方法。
setFirstResult():设置从哪条数据开始查询的(分页的索引是从0开始的);
setProperties():设置每页显示的条数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值