使用HibernateTemplate实现分页查询

最近有同学做项目的时候发现 Spring 整合 Hibernate 时候用的HibernateTemplate 不支持分页, 上网搜了搜找到结果并测试成功, 只需要用下面的方法就能分页:

/**
* 使用hql 语句进行操作
* @param hql HSQL 查询语句
* @param offset 开始取数据的下标
* @param length 读取数据记录数
* @return List 结果集
*/
public List getListForPage(final String hql, final int offset,
final int length) {
List list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
return list;
}

时间: 2024-09-19 15:36:06

使用HibernateTemplate实现分页查询的相关文章

分页查询-查询数据库名字相同且数量很多的数据,怎么分页?

问题描述 查询数据库名字相同且数量很多的数据,怎么分页? 每页10行,但是要查询的数据因为名字相同条件,而并不连续,且数量很多,如何实现分页查询?我用的ssi框架,具体卡在action中不知道怎么办 解决方案 分页和连续不连续没有关系.参考:http://blog.csdn.net/wushuang5566110/article/details/6926844http://liuzidong.iteye.com/blog/1042172 解决方案二: 你要查多少行跟第几页,直接在sql语句中操作

关于分页查询和性能问题

分页查询是经常能够遇到的问题,我们首先看看分页查询存在的理由: 方便用户:用户不可能一次察看所有数据,所以一页一页的翻看比较好. 提高性能:一次从数据库中提取所有数据会比较慢. 那么现在我来尝试反驳上述理由: 真的方便吗?我们考虑下面的情况 如果数据只有20条. 如果数据超过1000条. 第一种显然不必分页查询.奇怪的是第二种也不必,因为没有哪个用户愿意一页一页的翻到最后,如果用户查询到的数据超过了他所关心的数据范围,我认为应该让他重新输入查询条件,就像我们使用google一样. 但是作为一个友

ASP实用技巧:关于分页查询和性能问题

分页|技巧|问题|性能 分页查询是经常能够遇到的问题,我们首先看看分页查询存在的理由: 方便用户:用户不可能一次察看所有数据,所以一页一页的翻看比较好. 提高性能:一次从数据库中提取所有数据会比较慢. 那么现在我来尝试反驳上述理由: 真的方便吗?我们考虑下面的情况 如果数据只有20条. 如果数据超过1000条.第一种显然不必分页查询.奇怪的是第二种也不必,因为没有哪个用户愿意一页一页的翻到最后,如果用户查询到的数据超过了他所关心的数据范围,我认为应该让他重新输入查询条件,就像我们使用google

T-SQL 随机返回特定行数据和分页查询

T-SQL 语言相较于标准SQL添加了很多特性,为了提高SQL Server的表现,是有必要深入了解的,面试时一般也会包 含这两个小问题. 首先,是在一个AdventureWorks中Person.Address中随机返回5行信息,可以如下写: SELECT TOP 5 * FROM ( SELECT *,NEWID() as RandomID FROM Person.Address ) t ORDER BY t.RandomID 关键在于调用了内置函数NEWID()生成的随机数,并排序,取前5

防SQL注入:生成参数化的通用分页查询语句

前些时间看了玉开兄的"如此高效通用的分页存储过程是带有sql注入漏洞的"这篇文章,才突然想起 某个项目也是使用了累似的通用分页存储过程.使用这种通用的存储过程进行分页查询,想要防SQL注入 ,只能对输入的参数进行过滤,例如将一个单引号"'"转换成两个单引号"''",但这种做法是不安全 的,厉害的黑客可以通过编码的方式绕过单引号的过滤,要想有效防SQL注入,只有参数化查询才是最终 的解决方案.但问题就出在这种通用分页存储过程是在存储过程内部进行SQ

解决Oracle分页查询中排序与效率问题

原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by ID 结果如下: RN ID YYB XM MC ---------- ----------------- ---------------------- 3 4

详解Oracle的几种分页查询语句

分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句.ROWNUM <= 40和RN >= 21控制分页查询的每页的范围. 上面给出的这个分页查询语句,在大多数情况拥有较高的效率.分页的目的就是控制输出结果集大小,

如何解决Oracle分页查询中排序与效率问题

本文将结合作者近日工作中,在ORACLE数据库分页查询时,遇到一个小问题,为大家讲解如何解决Oracle分页查询中排序与效率问题. 原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborganization o where t.cjr=u.id and u.orgid=o.orgcode and t.gx = 1 order by ID 结果如下: RN  I

Oracle分页查询语句简介

Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句.ROWNUM <= 40 和RN >= 21控制分页查询的每页的范围. 上面给出的这个分页查