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; }