hibernate提供了很便捷的分页方式,通过setMaxResults等方法可以轻松实现分页。但是,在做分页方法时一般会用到记录总数(totalResults),这应该用什么方法统计呢?我目前用的方法是在DAO类中加入一个方法,该方法执行sql语句例如:select sum(*) from table where × × ×;这样来获得记录总数,但感觉这么做每次获取记录总数都要select一次数据库,效率很低,请问大家是如何获取记录总数的。有什么好的方法可以尽可能的不牺牲效率,却能保持良好的设计?

解决方案 »

  1.   

    hql最终也是转换成sql执行啊
    当然用select sum(*)了
      

  2.   

    我写错了,是count(*)二楼的,我说的效率低是因为要执行两次sql语句。
      

  3.   

    同意楼主说法,这样子执行两次sql确实不太好;如果能一次执行完,就是记录数+返回结果就好了;但我也找不到方法解决
      

  4.   

    我最终妥协了,还是多执行了一次sql
      

  5.   

    我也是执行了两次,不过统计总记录数可以不必把所有字段都count进去,count(*)是把所有字段都算进去了,如果sum(1) 或者count(1)是不是好一点呢?
      

  6.   

    楼上的,从可读性这方面考虑的话count(1)好像不太好我是用count(c.ID)这种习惯了