java--Hibernate实现分页查询
首先在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> <a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="currPage-1"/>">[上一页]</a> </s:if><s:if test="currPage != totalPage"><a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="currPage+1"/>">[下一页]</a> <a href="${pageContext.request.contextPath }/department_findAll.action?currPage=<s:property value="totalPage"/>">[尾页]</a> </s:if></span> </td> </tr> </table>
转载于:https://www.cnblogs.com/Nyan-Workflow-FC/p/6494531.html
java--Hibernate实现分页查询相关推荐
- 【java】在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException...
场景: 在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException 错误: java.lang ...
- java开发之分页查询
工具类 package com.luer.comm.utils; import java.util.List; public class PageBean<T> { //已知数据 priv ...
- 我爱Java系列---【分页查询】
一.需求 查询每个分类下的商品详情 二.实现步骤 菜单页面拼接超链接,传递商品分类主键 分类商品页面接收分类主键数据,向服务器发送AJAX请求 Servlet接收客户端分类主键的数据 调用业务层方法组 ...
- java的mysql分页查询语句怎么写_java的mysql连库 增删改查语句、分页查询语句大全...
//代码复制出来,修改一下bean,加载一下jar包,能直接用的,不懂加我Q 983331283 package cn.tootoo.entity; public class Page { priva ...
- Java : Hibernate 动态+分页+自定义字段+自定义实体类查询
// 组合查询public List<ListBookDTO> listSetDSL(PublishingHouse publishingHouse,Integer minDiscount ...
- Java Web实现分页查询
目录 使用工具: 使用Jar包: 项目下载连接: 数据库表 实体类: 用户实体类: 分页实例化: 在Dao接口中定义2个方法: 接口: 实现Dao接口方法解析: service层: 接口: 接口实现: ...
- Java Mapper实现分页查询
Mapper.java定义方法 List<Object> eventList_Done(@Param("pageNo") Integer pageNo,@Param(& ...
- Hibernate DetachedCriteria方式分页查询返回总记录数
最近在使用Hibernate进行分页查询的时候,发现Hibernate分页有一个瓶颈,就是只能访问查询对应的记录,并不能返回符合条件的总条数,网上给的很多策略都是再写一个方法,通过HQL查询总记录数, ...
- JPA 多表分页查询
第一次接触到使用JPA + hibernate 实现分页查询,在此记录一下,以备以后参考 .java代码仅实现简单的分页查询,更复杂的SQL通过视图实现. import org.springframe ...
- 自定义报错返回_MybatisPlus基础篇学习笔记(五)------自定义sql及分页查询
本章目录 自定义sql 分页查询 1. 自定义sql 在dao文件中编写自定义接口,并在方法上使用注解形式注入SQL,如图所示: 第一种: 第二种 ① application.yml加入下面配置 my ...
最新文章
- 功能很全的图书馆管理系统
- 主流NoSQL及应用场景详解
- 想实现高德/百度示例中 源代码编辑器+效果预览
- Android骨架屏实现方案
- Windows服务创建及安装
- oracle-00028,Oracle 10g錯誤:「ORA-00028:您的會話已被終止」
- Laravel nginx 伪静态规则
- js混淆还原工具_混淆过的js代码如何还原?
- 使用JMeter录制脚本并调试
- mastercam西门子840d后处理_MasterCAM对西门子802D后置处理
- 量子计算机是一种采用基于原理,量子计算的发展
- 电脑爱好者 2008年第24期 12月下
- POWER BI | 注册
- elasticsearch实战 中文+拼音搜索
- RocketMQ 延迟队列
- ML-降维:PCA、SVD、LDA、MDS、LLE、LE算法总结
- 编写一个随机抽奖程序php,基于PHP实现简单的随机抽奖小程序
- 研华PCI板卡开发(5)快速入门(5)群组操作
- 入坑百度飞浆PP深度学习(一)
- 网络近端串扰测试软件,使用DSX2-5000或者DTX-1800测试网线外部串扰