Struts2+Hibernate 实现数据分页
来源:互联网 发布:淘宝纸盒加工厂前景 编辑:程序博客网 时间:2024/05/15 18:34
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> 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配置:
<action name="income" class="com.xqh.action.IncomeAction"><!-- 为两个逻辑视图配置视图页面 --><result name="error">/error.jsp</result><result name="paging">/income/income_list.jsp</result><result name="update">/income/income_edit.jsp</result></action>
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" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><head><title>收入列表</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><link rel="stylesheet" type="text/css" href="../images/styles.css"></head><body><div class="div1"><table width="100%" cellpadding="0" cellspacing="0" border="0"align="center"><tr><td class="td_title1">·当前位置:收入管理>>查看收入</td></tr><tr><td bgcolor="#FFFFFF" height="50"><br><table border="1" align="center" width="700" cellpadding="1"cellspacing="1" bgcolor="#036500" bordercolor="#FFFFF"><tr bgcolor="#FFFFFF"><td class="tb_tl" align="center">收入编号</td><td class="tb_tl" align="center">日期</td><td class="tb_tl" align="center">方式 </td><td class="tb_tl" align="center">金额</td><td class="tb_tl" align="center">项目</td><td class="tb_tl" align="center">来源</td><td class="tb_tl" align="center">人员</td><td class="tb_tl" align="center">备注</td><td class="tb_tl" align="center">操作</td></tr><s:iterator value="#request.income"> <tr bgcolor="#FFFFFF"> <td align="center"><s:property value="id"/></td> <td align="center"><s:date name="date" format="yyyy-MM-dd"/></td> <td align="center"><s:property value="style"/></td> <td align="center"><s:property value="money"/></td> <td align="center"><s:property value="project"/></td> <td align="center"><s:property value="source"/></td> <td align="center"><s:property value="personnel"/></td> <td align="center"><s:property value="remarks"/></td> <td align="center"> <a href="javascript:if(confirm('确定要删除${id}吗?'))location='income!del?id=${id}'">删除</a> <a href="javascript:if(confirm('确定要修改${id}吗?'))location='income!updateTo?id=${id}'">修改</a> </td> </tr> </s:iterator></table><center> 总共有${allPage}页, 当前是第${offset}页 <a href="income!paging?page=0"><font size="2" color="blue">首页</font></a><a href="javascript:if(${offset}>1)location='income!paging?page=${page-1}'"><font size="2" color="red">上一页</font></a><a href="javascript:if(${offset}<${allPage})location='income!paging?page=${page+1}'"><font size="2" color="red">下一页</font></a><a href="income!paging?page=${allPage-1}"><font size="2" color="blue">末页</font></a> </center></td></tr></table></div></body>
5.分页结果:
本文章未提供底层数据库中的实现,但只要掌握分页原理,相信这问题不大。具体分页原理可参照:浅析数据分页技术
- Struts2+Hibernate 实现数据分页
- Struts2+HIBERNATE实现分页
- Struts2+HIBERNATE实现分页
- Hibernate+Struts2 分页实现
- struts2+hibernate+spring分页实现
- struts2+hibernate+spring分页实现
- struts2+spring+hibernate 实现分页
- struts2标签和hibernate实现分页
- Hibernate+struts2+spring 实现分页实例
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- 使用hibernate和struts2实现分页功能
- struts2+spring+hibernate分页
- struts2+hibernate分页
- struts2+Hibernate分页
- J2EE项目发布的时候注意的问题
- Myeclipse安装SVN插件
- SQL SERVER 2012 T-SQL 新增对象 SEQUENCE 续
- error: storage class specified for parameter
- 黑马程序员_C#委托学习笔记
- Struts2+Hibernate 实现数据分页
- 第九周 任务3
- 实体层次设计
- Oracle DBA
- myeclipse+tomcat无法进行断点调试的问题
- E - I Love You Too解题报告(张宇)
- H - Climbing Worm解题报告(张宇)
- A - A hard puzzle解题报告(张宇)
- SQL Server 2008 Express 安装或卸载时提示“重启计算机失败"的解决办法