集成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