在hibernate中实现分页查询功能特别容易,只需要如下代码即可
/**
* 分页查询
* @param hql:hql from objectName po where po.name=:name;
* @param map:参数map
* @param offset:查询的第多少条开始 从0是第一条开始<br /> * @param length:每页查询的个数
* @return 分页查询返回的list,没有则返回null
*/
public List findPageByHqlAndMap(String hql,
Map<String, Object> map, Integer offset, Integer length) {
Query query = getSession().createQuery(hql);
if (map != null ) {
for(String key : map.keySet()){
query.setParameter(key, map.get(key));
}
}
//起始,注意从0开始:0就是第一页
if (offset >= 0 ) {
query.setFirstResult(offset);
}
//返回记录数
if (length > 0 ) {
query.setMaxResults(length);
}
List list = query.list();
if(list!=null&&list.size()>0){
return list;
}else{
return null;
}
}
但是需要注意offset并不是页数 是从第几条开始,开始为0 默认是从第一条记录开始,所以页面如果是要查询第一页,那么offset就应该是
offset=page*num
其中,page是页面传的页数,第一页page为0,第二页page为1 ,num是每页显示的条数