|
在Hibernate里,可以直接使用Query对象,然后使用query.setFirstResult和setMaxResults来设置实现分页查询。
Spring也可以额调用Hibernate的机制来实现分页查询。
方法如下:
/**
* 公有查询分页方法
*
* @param <T> 泛型
* @param hql TODO
* @param startIndex TODO
* @param pageSize TODO
*
* @return TODO
*/
@SuppressWarnings(“unchecked”)
public <T> List<T> queryWithPage(final String hql, final int startIndex,
final int pageSize
) {
logger.info(“queryWithPage start!”);
@SuppressWarnings(“rawtypes”)
List list = crmTemplate.executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
System.err.println(“session is:” + session);
Query query = session.createQuery(hql);
List<T> result = query.setFirstResult((startIndex – 1) * pageSize)
.setMaxResults(pageSize).list();
System.err.println(“result size:” + result.size());
return result;
}
}
);
logger.info(“queryWithPage end!”);
return list;
}
注:HibernateTempate中的executeFind方法会返回Hibernate中的HibernateCallback调用的doInHibernate返回的Object值。然后再将其转换为List对象。
http://www.baidu.com
|
|