| 
 | 
 
| 
 
 在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 
 |   
 
 
 
 |