1.hibernate3实现分页查询
hibernate3实现分页查询需要继承HibernateDaoSupport类,实现代码如下:
protected List<T> findByPage(final String hql,final int pageNo,final int pageSize,final Object...params){
List<T> list = getHibernateTemplate().execute(new HibernateCallback<List<T>>() {
@SuppressWarnings("unchecked")
@Override
public List<T> doInHibernate(Session arg0) throws HibernateException, SQLException {
Query query = arg0.createQuery(hql);
for(int i=0,len=params.length;i<len;i++){
query.setParameter(i, params[i]);
}
return query.setFirstResult((pageNo-1)*pageSize)
.setMaxResults(pageSize)
.list();
}
});
return list;
}
2.hibernate4实现分页查询
hibernate4实现分页查询,需要在实现类中注入SessionFactory实例。实现代码如下:
@SuppressWarnings("unchecked")
protected List<T> findByPage(String hql,int pageNo,int pageSize,Object...params)
{
Query query = getSessionFactory()
.getCurrentSession().createQuery(hql);
for(int i=0,len=params.length;i<len;i++)
{
query.setParameter(i, params[i]);
}
return (List<T>)query.setFirstResult((pageNo-1)*pageSize)
.setMaxResults(pageSize)
.list();
}