Hibernate 分页中,查询指定页面的数据
2016-11-28 18:44
597 查看
一般数据库实现分页,都是传一个起始数据和每页展示的数据的,想到使用mysql的limit关键字就可以查询,如下:
select * FROM ceshi
limit 1,10
这样的确可以实现查询指定范围内的数据,要是使用hibernate的离线多条件查询的话,如果使用DetachedCriteria的sqlRestriction,添加查询条件的话,会报错,如下sql语句:
// 由于条件是组合一起的,所以有可能有些条件是为空的,需要判断是否为空,拼接不同的sql語句
// 动态拼接sql语句查询,当条件为null,也会继续执行
Session session = getCurrentSession();
DetachedCriteria dc = DetachedCriteria.forClass(RetireInfor.class);
Criteria criteria = dc.getExecutableCriteria(session);
if (pageSize > 0) {
// Integer[] pages = { new Integer(start), new Integer(pageSize) };
Type[] types = { StandardBasicTypes.INTEGER,
StandardBasicTypes.INTEGER };
queryString += " limit ?,? ";
dc.add(Restrictions.sqlRestriction("LIMIT ?,?", pages, types));//这里会在后台报错,说无法识别limit
}
上述的错误,百度了一下,说是hibernate无法识别limit,有一种方法,使用Criteria,设置开始的数据和最大数据,如下代码:
select * FROM ceshi
limit 1,10
这样的确可以实现查询指定范围内的数据,要是使用hibernate的离线多条件查询的话,如果使用DetachedCriteria的sqlRestriction,添加查询条件的话,会报错,如下sql语句:
// 由于条件是组合一起的,所以有可能有些条件是为空的,需要判断是否为空,拼接不同的sql語句
// 动态拼接sql语句查询,当条件为null,也会继续执行
Session session = getCurrentSession();
DetachedCriteria dc = DetachedCriteria.forClass(RetireInfor.class);
Criteria criteria = dc.getExecutableCriteria(session);
if (pageSize > 0) {
// Integer[] pages = { new Integer(start), new Integer(pageSize) };
Type[] types = { StandardBasicTypes.INTEGER,
StandardBasicTypes.INTEGER };
queryString += " limit ?,? ";
dc.add(Restrictions.sqlRestriction("LIMIT ?,?", pages, types));//这里会在后台报错,说无法识别limit
}
上述的错误,百度了一下,说是hibernate无法识别limit,有一种方法,使用Criteria,设置开始的数据和最大数据,如下代码:
// 由于条件是组合一起的,所以有可能有些条件是为空的,需要判断是否为空,拼接不同的sql語句 // 动态拼接sql语句查询,当条件为null,也会继续执行 Session session = getCurrentSession(); DetachedCriteria dc = DetachedCriteria.forClass(RetireInfor.class); Criteria criteria = dc.getExecutableCriteria(session); if (pageSize > 0) { // Integer[] pages = { new Integer(start), new Integer(pageSize) }; // Type[] types = { StandardBasicTypes.INTEGER, // StandardBasicTypes.INTEGER }; // // queryString += " limit ?,? "; // dc.add(Restrictions.sqlRestriction("LIMIT ?,?", pages, types)); criteria.setFirstResult(start); // 开始记录 criteria.setMaxResults(pageSize); // 查询多少条 } Criteria c = dc.getExecutableCriteria(session); List<RetireInfor> list = null; try { list = c.list(); } catch (Exception e) { LogUtil.error(e); }这样就可以实现分页的功能,离线多条件查询功能。
相关文章推荐
- Hibernate 指定查询结果的数据类型
- org.hibernate.exception.GenericJDBCException: Cannot open cconnection(执行几次查询之后就不能查询/页面动不了/分页查询只能点击几)
- hibernate 查询两个时间段的数据和分页实现
- 学会hibernate数据查询分页
- mybatis分页多条件查询指定时间段数据的sql语句
- struts+spring+hibernate用jquery实现数据分页异步加载,页面不刷新
- hibernate分页查询,在自己写的s2sh注册登录的基础上添加对数据表的分页显示功能
- 怎样将Mysql数据库的数据导入到Hbase并在页面展现分页查询
- asp.net mvc jqgrid 同一个页面查询不同的表,jqgrid显示不同表的表头和数据并且分页
- Hibernate中的createQuery查询一条数据、多条数据、分页查询数据
- hibernate_查询简介: 分页, 数据总数, 结果集的包装, 位置参数的设置
- hibernate新增后数据库能查到数据但跳转查询页面后还是原来的数据
- hibernate_数据分页, 查询总数
- Bootstrap列表分页及查询(数据与页面分离形式)
- 使用该JavaBean可以将数据在JSP页面中以表格的形式显示出来,并具有动态排序、动态生成查询、自动分页功能
- oracle 数据分页查询
- 应用Hibernate3的DetachedCriteria实现分页查询
- 在JSP页面中实现检索数据的分页显示
- 不刷新页面查询数据库中数据的方法
- SQL Server 系统表使用-查询指定数据库中用户表及其列、数据类、长度