在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是每页显示的条数
