但行好事
莫论前程❤

HibernateTemplate实现分页查询

Spring 整合 Hibernate 时候用的 HibernateTemplate 不支持分页,因此需要自己包装一个类进行分页,具体实现如下…使用spring的hibernateTemplate的回调机制扩展 hibernateTemplate的功能实现分页

不回调的话拿不到session,而spring里的hibernateTemplate不支持setFirstResult,setMaxResults 2个hibernate的分页操作方法。

  • 方法一
/**
  * 使用hql 语句进行操作 
  * @param hql HSQL 查询语句 
  * @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; 
}
  • 方法二
public List pageQuery(final String hql, final int first,final int max){
        return  (List) getHIbernateTemplate().execute(new HibernateCallback[]{
                      public Object doInHibernate(Session session) throws HibernateException {
                               Query queryObject = session.createQuery(hql);
                               queryObject.setFirstResult(first);
                               queryObject.setMaxResult(max);
                               return queryObject.list();
                      }
          },true);
}

execute方法和executeFind方法的区别

  • execute()方法

使用execute实现分页查询时需要进行强制转换。

  • executeFind()方法

该方法的返回值是List集合,不需要强制转换

赞(0) 打赏
未经允许不得转载:刘鹏博客 » HibernateTemplate实现分页查询
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏