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层实现总记录数的查询和对象的总记录集合
@Override
public 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;
} @Override
public 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>
java--Hibernate实现分页查询的更多相关文章
- hibernate 的分页查询
hibernate的分页查询有个好处,就是不用管数据库方言.比如db2的分页查询很麻烦,但是用hibernate的方式,就完全不用管这些了 /* 使用HQL分页查询Customer信息 */ publ ...
- 用Hibernate实现分页查询
分页查询就是把数据库中某张表的记录数进行分页查询,在做分页查询时会有一个Page类,下面是一个Page类,我对其做了详细的注解: package com.entity; /** * @author:秦 ...
- Hibernate实现分页查询
分页查询就是把数据库中某张表的记录数进行分页查询,在做分页查询时会有一个Page类,下面是一个Page类,我对其做了详细的注解: 1 package com.entity; 2 /** 3 * @au ...
- Java GUI+mysql+分页查询
1.要求 : 创建一个学生信息管理数据库 2.实现分页查询 代码如下: a)学生实体类: /** * @author: Annie * @date:2016年6月23日 * @description: ...
- Java基础94 分页查询(以MySQL数据库为例)
1.概述 分页查询,也可叫做分批查询,基于数据库的分页语句(不同数据库是不同的). 本文使用的事MySql数据库. 假设:每页显示10条数据. Select * from c ...
- Hibernate 条件-分页查询
这里我们继续跟着上一次的节奏继续学习Hibernate的查询. 1.条件查询一(占位符) 按照占位符的方式进行条件查询,这里query有一个setInteger(arg1, arg2)方法,其中第一个 ...
- 【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 ...
- Lucene 05 - 使用Lucene的Java API实现分页查询
目录 1 Lucene的分页查询 2 代码示例 3 分页查询结果 1 Lucene的分页查询 搜索内容过多时, 需要考虑分页显示, 像这样: 说明: Lucene的分页查询是在内存中实现的. 2 代码 ...
- Java : Hibernate 动态+分页+自定义字段+自定义实体类查询
// 组合查询public List<ListBookDTO> listSetDSL(PublishingHouse publishingHouse,Integer minDiscount ...
随机推荐
- 【JMeter4.0】之 “jdk1.8、JMeter4.0” 安装与配置以及JMeter永久汉化和更改界面背景、并附加附录:个人学习总结
目录: 一.首先,需要安装.配置jdk 二.其次,安装.配置JMeter 三.JMeter汉化以及更改界面背景 四.附录:个人学习总结 一.首先,需要安装.配置jdk 返回目录 1.到官网下载1. ...
- CentOS VSCode调试go语言出现:exec: "gcc": executable file not found in PATH
CentOS VSCode调试go语言出现:exec: "gcc": executable file not found in PATH 解决方案: 执行如下命令安装GCC,然后重 ...
- saltstack内置state模块file之append
添加文件文本在文件尾部 salt.states.file.append(name, text=None, makedirs=False, source=None, source_hash=None, ...
- 微信小程序之云开发一
最近听说微信小程序发布了云开发,可以不需要购买服务器,就能开发小程序和发布小程序,对于动辄千元的服务器,极大的节约了开发成本,受不住诱惑,我就开始了小程序的云开发,目前项目已上线,亲测不收费,闲不住的 ...
- 仿百度壁纸client(五)——实现搜索动画GestureDetector手势识别,动态更新搜索keyword
仿百度壁纸client(五)--实现搜索动画GestureDetector手势识别,动态更新搜索关键字 百度壁纸系列 仿百度壁纸client(一)--主框架搭建,自己定义Tab + ViewPager ...
- linux字符集查看与设置
linux字符集查看与设置 命令:locale -a 查看本地的字符集 locale -m 查看所有支持的字符集 查看当前默认设置 echo $LANG 记录系统默认使用 ...
- hive深入使用
Hive表的创建和数据类型 https://cwiki.apache.org/confluence/display/Hive/Home 管理表和外部的区别 # 管理表 1. 内部表也称之为MANAGE ...
- 小程序JSON数组操作
- 小程序获取openId
1.小程序获取微信openId wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId / ...
- php读写csv、xml文件: SimpleExcel
实例结构: 1. csv2xml.demo.php <?php use SimpleExcel\SimpleExcel; // 这句不能少! require_once ('../lib/Simp ...