【问题描述】在工作中,有一个比较复杂的feature使用的是Hibernate的Criteria实现的查询,但是PM要求在查询数据前,先告知用户有多少条巨鹿,让用户去选择返回多少条记录。
【解决办法】使用Projections.count("property") 或者 Projections.rowCount()
查看Hibernate生成的query是:
select count(*) as y0_ from USER this_ where ( 1=1 )备注:有些朋友可能使用的是c.list.size().返回的记录数,其实这样的话,hibernate是从数据库里面把所有满足条件的记录查询出来放到一个list里面,然后再用list的length返回长度。这样不是此需求的初衷。因为这样会消耗性能。。。并且在数据过多的情况下面,会造成tomcat的OutOFMemory错误
Hibernate查询总数优化
本文介绍了一种使用Hibernate的Criteria API优化查询数据总数的方法,通过使用Projections.count()或Projections.rowCount(),可以在不获取全部数据的情况下快速得到满足条件的记录数。
1294

被折叠的 条评论
为什么被折叠?



