Hibernate DetachedCriteria方式分页查询返回总记录数

最近在使用Hibernate进行分页查询的时候,发现Hibernate分页有一个瓶颈,就是只能访问查询对应的记录,并不能返回符合条件的总条数,网上给的很多策略都是再写一个方法,通过HQL查询总记录数,个人感觉这种方式太复杂了,如果涉及到复杂查询的时候,HQL也不好写,既然Hibernate是个这么流行的ORM框架,我相信它肯定提供了对应的方式,所以尝试了下,发现如下方式更为人性化。

1.通过设置Projections.rowCount()查询总记录数

// 查询总条数
Long totalCount = (Long) detachedCriteria.setProjection(Projections.rowCount()).getExecutableCriteria(this.getHibernateTemplate().getSessionFactory().getCurrentSession()).uniqueResult();

2.取消查询总条数的设置

// 取消查询总条数 进行正常分页查询
detachedCriteria.setProjection(null);

3.正常分页查询

this.getHibernateTemplate().findByCriteria(detachedCriteria, startIndex, pageSize);

如果日志设置打印SQL的话,可以发现查询总条数的发送的SQL就是select count(*) from…,即有效率保障,使用起来还方便

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值