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…,即有效率保障,使用起來還方便

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章