集成Spring后HibernateTemplate实现分页

Posted 一步一个脚印,坚持

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成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;     
    }    

 

以上是关于集成Spring后HibernateTemplate实现分页的主要内容,如果未能解决你的问题,请参考以下文章

集成Spring后HibernateTemplate实现分页

spring集成mybatis后,打印SQL语句

Angular(SPA) 前端和 Spring Boot 后端的 SAML 2.0 集成

Spring 批处理作业应仅在 Spring 集成文件轮询器轮询文件后执行一次

spring boot.2x 集成swagger 加入拦截器后 swagger不能访问

spring boot j集成seagger 加入拦截器后 swagger 不能访问