HibernateTemplate实现分页
2016-06-29 12:49
274 查看
Spring 整合 Hibernate 时候用的 HibernateTemplate 不支持分页,因此需要自己包装一个类进行分页,具体实现如下...使用spring的hibernateTemplate的回调机制扩展hibernateTemplate的功能实现分页
import java.sql.SQLException; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.Criterion; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; public class PageUtil<T> { private HibernateTemplate hibernateTemplate; // 使用hql 语句进行操作 public List<T> getListForPage(final String hql, final int offset, final int length) { @SuppressWarnings("unchecked") List<T> list = hibernateTemplate.executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { //String hql = "from Entity"; Query query = session.createQuery(hql); query.setFirstResult(offset); query.setMaxResults(length); return query.list(); } }); return list; } // 使用criterion进行操作 protected List getListForPage(final Class arg, final Criterion[] criterions, final int offset, final int length) { List list = hibernateTemplate.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 int getSaleChanceListCount() { int totalRecord = hibernateTemplate.execute(new HibernateCallback<Integer>() { @Override public Integer doInHibernate(Session session) throws HibernateException, SQLException { String hql = "select count(id) from Entity"; Query query = session.createQuery(hql); //query.uniqueResult()返回Long,强转Number再获取intValue Number num = (Number) query.uniqueResult(); return num.intValue(); } }); return totalRecord; } }
相关文章推荐
- Moving Average from Data Stream
- 由RGB到HSV颜色空间的理解
- popupwindow异常:unable to add window — token null is not valid
- 自定义ViewGroup
- Hibernate distinct 查询的多种实现方式
- 深入分析@Transactional的用法
- jquery滚动条滚动的指定位置
- Linux常用命令--uniq
- 安装绿色版mysql5.7.13遇到的问题
- Git HEAD 意思详解 和版本回退
- m2e安装
- Spring Data Redis 让 NoSQL 快如闪电 (1)
- JavaSE 基础 第13节 算术赋值运算符与自增自减运算符
- Python实战1_3:爬取租房信息
- java
- 简单语句实现用户添加、删除
- android开发之-相对布局的属性
- 350. Intersection of Two Arrays II
- 谈谈CAN-BUS和LIN-BUS
- Spring Data Redis 让 NoSQL 快如闪电(2)