集成Spring后HibernateTemplate實現分頁


spring 整合 hibernate 時候用的 HibernateTemplate 不支持分頁,因此需要自己包裝一個類進行分頁,具體實現如下...使用spring的hibernateTemplate的回調機制擴展hibernateTemplate的功能實現分頁

/**   
* 使用hql 語句進行操作   
  
   * @param hql   
* @param offset   
* @param length   
* @return List   
*/    
public List getListForPage(final String hql, final int offset,     
    final int length) {     
   List list = getHibernateTemplate().executeFind(new HibernateCallback() {     
    public Object doInHibernate(Session session)     
      throws HibernateException, SQLException {     
     Query query = session.createQuery(hql);     
     query.setFirstResult(offset);     
     query.setMaxResults(length);     
     List list = query.list();     
     return list;     
    }     
   });     
   return list;     
}/**   
* 使用criterion進行操作   
* @param arg   
* @param criterions   
* @param offset   
* @param length   
* @return List   
*/    
protected List getListForPage(final Class arg, final Criterion[] criterions,final int offset, final int length) {     
   List list = getHibernateTemplate().executeFind(new HibernateCallback() {     
    public Object doInHibernate(Session session)     
      throws HibernateException, SQLException {     
     Criteria criteria = session.createCriteria(arg);     
     //循環遍歷添加約束條件     
     for (int i = 0; i < criterions.length; i++) {     
      criteria.add(criterions[i]);     
     }     
     criteria.setFirstResult(offset);     
     criteria.setMaxResults(length);     
     return criteria.list();     
    }     
   });     
   return list;     
}     
    
// 獲得集合的總數(聚合查詢)     
    public Integer getSaleChanceListCount() {     
        final String hql = "select count(*) from SaleChanceInfo si";     
        Integer result = null;     
        result = (Integer)getHibernateTemplate().execute(new HibernateCallback() {     
    
            public Object doInHibernate(Session arg0)     
                    throws HibernateException, SQLException {     
                Query query = arg0.createQuery(hql);     
                return query.uniqueResult();     
            }     
    
        });     
        return result;     
    }    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM