求Hibernate的分页方法
原本是用这种方法分页的Listlist=session.createQuery(hql).setFirstResult(pageSize*(pageIndex-1)).s...
原本是用这种方法分页的
List list = session.createQuery(hql) .setFirstResult(pageSize*(pageIndex - 1)).setMaxResults(pageSize).list();
后来测试下来这种方法效率很低,是全部查询出来再截几条数据出来的,有没有像SQL里行号分页那种效率高点的hibernate分页方法,只查询需要的条数即可的。 展开
List list = session.createQuery(hql) .setFirstResult(pageSize*(pageIndex - 1)).setMaxResults(pageSize).list();
后来测试下来这种方法效率很低,是全部查询出来再截几条数据出来的,有没有像SQL里行号分页那种效率高点的hibernate分页方法,只查询需要的条数即可的。 展开
3个回答
展开全部
public String getLimitString(String sql) {
StringBuffer pagingSelect = new StringBuffer(100);
pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
pagingSelect.append(sql);
pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?");
return pagingSelect.toString();
}
做这个方法。调用在你的hql里就可以了 hibernate的现成方法只有你那种。
上述方法,你稍微做下修改即可
StringBuffer pagingSelect = new StringBuffer(100);
pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
pagingSelect.append(sql);
pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?");
return pagingSelect.toString();
}
做这个方法。调用在你的hql里就可以了 hibernate的现成方法只有你那种。
上述方法,你稍微做下修改即可
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询