首先在Action类定义当前页的值

private Integer currPage = 1
setter,getter

在spring IOC容器进行注入该变量

在Action类写一个findAll方法,里面有个findByPage()方法

Service层实现:

//分页查询部分方法public PageBean<Department> findByPage(Integer currPage) {PageBean<Department> pageBean = new PageBean<Department>();//封装当前页数
        pageBean.setCurrPage(currPage);//封装每页显示的记录数int pageSize = 3;pageBean.setPageSize(pageSize);//封装总记录数int totalCount = departmentDao.findCount();double tc = totalCount;pageBean.setTotalCount(totalCount);//封装总页数Double totalPage = Math.ceil(tc/pageSize);pageBean.setTotalPage(totalPage.intValue());//封装每页显示的数据int begin = (currPage-1) * pageSize;java.util.List<Department> depts = departmentDao.findByPage(begin,pageSize);pageBean.setList(depts);return pageBean;}

findAll方法里调用Service层的方法返回一个复杂的集合(有当前页,和查询得到的信息集合),这个集合我们创建一个类pageBean来管理

package cn.nyan.domain;import java.util.List;/*** 分页封装的类* @author Administrator**/
public class PageBean<T> {private int currPage;private int pageSize;//每页显示的记录数private int totalCount;//总的记录数private int totalPage;//总页数private List<T> list;//每页显示的数据
getter/setter

Dao层实现总记录数的查询和对象的总记录集合

@Overridepublic int findCount() {String hql = "select count(*) from Department";List<Long> list = this.getHibernateTemplate().find(hql);if(list.size()>0){return list.get(0).intValue();}return 0;}@Overridepublic List<Department> findByPage(int begin, int pageSize) {DetachedCriteria criteria = DetachedCriteria.forClass(Department.class);List<Department> list = this.getHibernateTemplate().findByCriteria(criteria, begin, pageSize);return list;}

返回的pageBean通过Action返回页面,将pageBean放入ActionContext值栈中,使用OGNL表达式进行取值

public String findAll(){PageBean<Department> pageBean = departmentService.findByPage(currPage);//将pageBean放入值栈中
        ActionContext.getContext().getValueStack().push(pageBean);return "findAll";}

在页面读取:

<table cellspacing="0" border="1" class="table1"><thead><tr><th width="450">部门名称</th><th  width="450">编辑</th></tr>
</thead><!-- 获取pageBean对象属性 -->
<s:iterator value="list" var="department"><tbody><tr><td align="center"><s:property value="#department.dname"/></td><td align="center"><a href="editDept.jsp"><img src="${pageContext.request.contextPath }/images/edit.png"></a></td></tr></tbody>
</s:iterator></table>
<br/><table border="0" cellspacing="0" cellpadding="0"  width="900px">
<tr>
<td align="right"><span>第<s:property value="currPage"/>/<s:property value="totalPage"/>页</span><span><s:if test="currPage != 1"><a href="${pageContext.request.contextPath }/department_findAll.action?currPage=1">[首页]</a>&nbsp;&nbsp;<a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="currPage-1"/>">[上一页]</a>&nbsp;&nbsp;</s:if><s:if test="currPage != totalPage"><a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="currPage+1"/>">[下一页]</a>&nbsp;&nbsp;<a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="totalPage"/>">[尾页]</a>&nbsp;&nbsp;</s:if></span>
</td>
</tr>
</table>

转载于:https://www.cnblogs.com/Nyan-Workflow-FC/p/6494531.html

java--Hibernate实现分页查询相关推荐

  1. 【java】在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException...

    场景: 在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException 错误: java.lang ...

  2. java开发之分页查询

    工具类 package com.luer.comm.utils; import java.util.List; public class PageBean<T> { //已知数据 priv ...

  3. 我爱Java系列---【分页查询】

    一.需求 查询每个分类下的商品详情 二.实现步骤 菜单页面拼接超链接,传递商品分类主键 分类商品页面接收分类主键数据,向服务器发送AJAX请求 Servlet接收客户端分类主键的数据 调用业务层方法组 ...

  4. java的mysql分页查询语句怎么写_java的mysql连库 增删改查语句、分页查询语句大全...

    //代码复制出来,修改一下bean,加载一下jar包,能直接用的,不懂加我Q 983331283 package cn.tootoo.entity; public class Page { priva ...

  5. Java : Hibernate 动态+分页+自定义字段+自定义实体类查询

    // 组合查询public List<ListBookDTO> listSetDSL(PublishingHouse publishingHouse,Integer minDiscount ...

  6. Java Web实现分页查询

    目录 使用工具: 使用Jar包: 项目下载连接: 数据库表 实体类: 用户实体类: 分页实例化: 在Dao接口中定义2个方法: 接口: 实现Dao接口方法解析: service层: 接口: 接口实现: ...

  7. Java Mapper实现分页查询

    Mapper.java定义方法 List<Object> eventList_Done(@Param("pageNo") Integer pageNo,@Param(& ...

  8. Hibernate DetachedCriteria方式分页查询返回总记录数

    最近在使用Hibernate进行分页查询的时候,发现Hibernate分页有一个瓶颈,就是只能访问查询对应的记录,并不能返回符合条件的总条数,网上给的很多策略都是再写一个方法,通过HQL查询总记录数, ...

  9. JPA 多表分页查询

    第一次接触到使用JPA + hibernate 实现分页查询,在此记录一下,以备以后参考 .java代码仅实现简单的分页查询,更复杂的SQL通过视图实现. import org.springframe ...

  10. 自定义报错返回_MybatisPlus基础篇学习笔记(五)------自定义sql及分页查询

    本章目录 自定义sql 分页查询 1. 自定义sql 在dao文件中编写自定义接口,并在方法上使用注解形式注入SQL,如图所示: 第一种: 第二种 ① application.yml加入下面配置 my ...

最新文章

  1. 功能很全的图书馆管理系统
  2. 主流NoSQL及应用场景详解
  3. 想实现高德/百度示例中 源代码编辑器+效果预览
  4. Android骨架屏实现方案
  5. Windows服务创建及安装
  6. oracle-00028,Oracle 10g錯誤:「ORA-00028:您的會話已被終止」
  7. Laravel nginx 伪静态规则
  8. js混淆还原工具_混淆过的js代码如何还原?
  9. 使用JMeter录制脚本并调试
  10. mastercam西门子840d后处理_MasterCAM对西门子802D后置处理
  11. 量子计算机是一种采用基于原理,量子计算的发展
  12. 电脑爱好者 2008年第24期 12月下
  13. POWER BI | 注册
  14. elasticsearch实战 中文+拼音搜索
  15. RocketMQ 延迟队列
  16. ML-降维:PCA、SVD、LDA、MDS、LLE、LE算法总结
  17. 编写一个随机抽奖程序php,基于PHP实现简单的随机抽奖小程序
  18. 研华PCI板卡开发(5)快速入门(5)群组操作
  19. 入坑百度飞浆PP深度学习(一)
  20. 网络近端串扰测试软件,使用DSX2-5000或者DTX-1800测试网线外部串扰

热门文章

  1. mysql的engine不同,导致事物回滚失败的问题
  2. 《编译系统透视:图解编译原理》
  3. 将 Entity Framework、LINQ 和 Model-First 用于 Oracle 数据库
  4. iOS程序-UIScrollView的基本使用
  5. CPU瓶颈(五)--过度编译与不必要重复编译的解决方案
  6. 【观点】失败应聘的五大原因
  7. 在idea中配置jetty
  8. MySQL及其图形界面navicat的安装
  9. Tomcat基础教程(三)
  10. HttpClient如何解决302重定向问题