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