本文实例讲述了Struts2+Hibernate实现数据分页的方法。分享给大家供大家参考,具体如下:
1.用Hibernate实现分页技术:
@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; // 第一条记录的索引
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
<%@ page language="java" pageEncoding="GBK"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="s" uri="/struts-tags" %>收入列表
| ·当前位置:收入管理>>查看收入 | ||||||||||||||||||
|
5.分页结果:
本文章未提供底层数据库中的实现,但只要掌握分页原理,相信这问题不大。具体分页原理可参照前面一篇:《Hibernate框架数据分页技术实例分析》
希望本文所述对大家基于Hibernate框架的Java程序设计有所帮助。



