微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Struts2+Hibernate实现数据分页的方法

这篇文章主要介绍了Struts2+Hibernate实现数据分页方法,结合实例形式分析了Struts2结合Hibernate实现数据分页的原理,步骤与相关实现代码,需要的朋友可以参考下

本文实例讲述了Struts2+Hibernate实现数据分页方法分享给大家供大家参考,具体如下:

1.用Hibernate实现分页技术:

/** * 使用hql语句进行分页查询 * @param hql 需要查询的hql语句 * @param offset 第一条记录索引 * @param pageSize 每页需要显示的记录数 * @return 当前页的所有记录 */ @SuppressWarnings("unchecked") public List findByPage(final String hql, final int offset, final int pageSize) { //通过一个HibernateCallback对象来执行查询 List list = getHibernateTemplate() .executeFind(new HibernateCallback() { //实现HibernateCallback接口必须实现的方法 public Object doInHibernate(Session session) throws HibernateException, sqlException { //执行Hibernate分页查询 List result = session.createquery(hql) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; } // 获取总记录数 public int getRows(String hql) { return getHibernateTemplate().find(hql).size(); }

2.在Action里调用Hibernate实现分页技术的方法,并跳转显示界面:

// 分页 @SuppressWarnings("unchecked") public String paging() { String hql = "from Income"; // 分页的数据表 int pageSize = 3; // 每页显示记录的条数 int allRows = service.getRows(hql); // 记录总数 int allPage = 0; // 总页数 int offset = getPage() + 1; // 第一条记录的索引 /*if (rows % size != 0) { pageSize = rows / size + 1; } else { pageSize = rows / size; }*/ allPage = (allRows - 1) / pageSize + 1; // 计算总页数 List income = service.findByPage(hql, (offset-1)*pageSize, pageSize); request.setAttribute("allPage", allPage); request.setAttribute("offset", offset); request.setAttribute("income", income); return "paging"; }

3.struts.xml配置:

/error.jsp/income/income_list.jsp/income/income_edit.jsp

4.显示界面income_list.jsp

收入列表

・当前位置:收入管理>>查看收入

收入编号

日期

方式

金额

项目

来源

人员

备注

操作

删除修改

总共有${allPage}页, 当前是第${offset}页 首页上一页下一页末页

5.分页结果:

文章未提供底层数据库中的实现,但只要掌握分页原理,相信这问题不大。具体分页原理可参照前面一篇:《Hibernate框架数据分页技术实例分析》

希望本文所述对大家基于Hibernate框架的Java程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐