需要一个辅助类,记录总页数,每页显示记录数,当前页,总记录数。
import java.io.Serializable;
public class PageView implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3121477018541456187L;
/** 总页数 **/
private int totalpage = 1;
/** 每页显示记录数 **/
private int maxresult = 1000;
/** 当前页 **/
private int currentpage = 1;
/** 总记录数 **/
private int totalrecord;
/** 要获取记录的开始索引 **/
public int getFirstResult() {
return (this.currentpage - 1) * this.maxresult;
}
public PageView() {
}
public PageView(int maxresult, int currentpage) {
this.maxresult = maxresult;
this.currentpage = currentpage;
}
public long getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(int totalrecord) {
this.totalrecord = totalrecord;
this.totalpage = this.totalrecord % this.maxresult == 0 ? this.totalrecord
/ this.maxresult : this.totalrecord / this.maxresult + 1;
}
public int getTotalpage() {
return totalpage;
}
public int getMaxresult() {
return maxresult;
}
public int getCurrentpage() {
return currentpage;
}
public void setCurrentpage(int currentpage) {
this.currentpage = currentpage;
}
}
createCriteria 这个接口代表对一个特定的持久类的查询。
/**
* 分页查询
* @param scope offset获取记录的开始索引 length 一页显示的记录数目
* @return
*/
public List getDDList(final CreditOrderScope scope, final int offset, final int length){
List list = this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(org.hibernate.Session session) {
Criteria c = session.createCriteria(RetailDD.class);
c.add(Expression.in(STATE, scope.getState()));
if(Boolean.TRUE.equals(scope.getReplaceFlag())){
c.add(Expression.isNull(RECON_FLAG));
}
if(scope.getResult() != null){
c.add(Expression.eq(RESULT, scope.getResult()));
}
Criteria p = c.createCriteria("DPackage");
if(scope.getStartDate() != null){
p.add(Expression.ge("dcDate",scope.getStartDate()));
}
if(scope.getEndDate() != null){
p.add(Expression.le("dcDate",scope.getEndDate()));
}
if(scope.getFileName() != null && !"".equals(scope.getFileName())){
p.add(Expression.eq(DDPackageDAO.FILE_NAME, scope.getFileName()));
}
p.addOrder(Order.asc("dcDate"));
c.addOrder(Order.asc(IN_ID));
//分页***************
c.setFirstResult(offset);
c.setMaxResults(length);
return c.list();
}
});
return list;
}
代码调用查询逻辑
//总记录数
int totalrecord = dd1.size();
//计算总金额
RetailDD fp = null;
BigDecimal amt1 = new BigDecimal("0.0");
//可选文件名称
String ag1 = "";
String ag2 = "";
StringBuffer fn = new StringBuffer();
//分页显示
PageView pv = null;
List dd = null;
if(scope.getNextPage()>1) {
pv = new PageView(1000,scope.getNextPage());
pv.setTotalrecord(totalrecord);
dd = serv.getDDListPage(scope,pv.getFirstResult(),1000);
} else {
//首页显示
pv = new PageView(1000,1);
pv.setTotalrecord(totalrecord);
dd = serv.getDDListPage(scope,pv.getFirstResult(),1000);
}
//当前页
rsp.setCurrentPage(pv.getCurrentpage());
//总记录
rsp.setTotalrecord(totalrecord);
//总页数
rsp.setTotalpage(pv.getTotalpage());
//每页显示数
rsp.setPageSize(dd.size());
//总金额
rsp.setTotalMoney(amt1.doubleValue());
//可选文件名
rsp.setFileName(fileName);
rsp.setFplist(dd);
界面主要部分代码
function jumpPage(selObj){
var pageNumber=selObj.options[selObj.selectedIndex].value;
document.query.nextPage.value = pageNumber;
document.query.outExcel.value = false;
document.query.submit();
}
function gotoPage(no,fno,lno){
if(lno==0){
return;
}
if(no==fno && no!=lno) {
alert("已经是第一页啦!");
return;
}
if(no==lno && no==fno) {
alert("已经是最后一页啦!");
return;
}
document.query.nextPage.value = no;
document.query.outExcel.value = false;
document.query.submit();
//document.gatherOrder.action = "ra_01_0101.do?orderType=22&nextPage="+no;
//document.gatherOrder.submit();
}
function doExportExcel(){
frmExport.action = "excel2.jsp";
frmExport.target = "excel2";
frmExport.submit();
}
<%
//当前页
int currentPage = ((Integer)request.getAttribute("currentPage")).intValue();
//总记录
int totalrecord = ((Integer)request.getAttribute("totalrecord")).intValue();
//总页数
int totalpage = ((Integer)request.getAttribute("totalpage")).intValue();
//每页显示数
int pageSize = ((Integer)request.getAttribute("pageSize")).intValue();
//总金额
Double totalMoney = (Double)request.getAttribute("totalMoney");
//可选文件名
String fileName = (String)request.getAttribute("fileName");
List fpdds = (List)request.getAttribute("fpdcs");
if(fpdds == null) fpdds = new ArrayList();
Set fileSet = new TreeSet();
%>
<table border="0" cellspacing="0" cellpadding="0" width="80%" >
<tr>
<td>每页1000笔/共<%=totalrecord%>笔 第<%=currentPage%>页/共<%=totalpage%>页 总金额:<nstc:out money="<%=totalMoney%>"/>元
<span style="width:40px;"> </span>
[<a href="javascript:gotoPage(1,<%=currentPage %>,<%=totalpage %>)">首页</a>][<a href="javascript:gotoPage(<%=currentPage>=2?currentPage-1:currentPage%>,<%=currentPage %>,<%=totalpage %>)">上一页</a>][<a href="javascript:gotoPage(<%=(currentPage+1)>totalpage?totalpage:(currentPage+1)%>,<%=currentPage %>,<%=totalpage %>)">下一页</a>][<a href="javascript:gotoPage(<%=totalpage%>,<%=currentPage %>,<%=totalpage %>)">末页</a>]
转第
<select name="jump" onchange="jumpPage(this)">
<%
for (int i = 1; i <= totalpage; i++) {
if (i == currentPage) {%>
<option selected value="<%=i%>"><%=i%></option>
<%}
else{%>
<option value="<%=i%>"><%=i%></option>
<%}
}%>
</select>
页
</td>
</tr>
</table>
分享到:
相关推荐
Hibernate分页查询小结
#### 三、Hibernate分页查询实现原理 ##### 3.1 使用SQL LIMIT实现分页 对于支持LIMIT关键字的数据库(例如MySQL),Hibernate会通过特定的方言(Dialect)来生成包含LIMIT关键字的SQL语句。具体实现如下: ```...
此外,优化查询,避免N+1查询问题,合理设计实体关系,都能有效提升Hibernate分页查询的效率。 总结起来,Hibernate的分页查询和数据库连接管理是其强大功能的重要组成部分。正确理解和使用这些特性,能够帮助...
让我们深入探讨Hibernate分页查询的相关知识点。 一、Hibernate分页原理 Hibernate分页查询基于SQL的LIMIT和OFFSET子句,通过Session的createQuery或createSQLQuery方法创建查询,并设置FirstResult和MaxResults...
hibernate分页(无排序,搜索,仅仅分页显示),服务器端分页在datatables上展现,有关 datatables的知识请关注它的官网http://www.datatables.net/,datatables的功能很 全面。 2,建表的sql--studentinfo和插入...
总结起来,"hibernate分页代码"是一个关于如何在Hibernate中进行分页查询的实践示例,适用于在MyEclipse环境下运行。通过Criteria API或HQL,开发者能够方便地实现分页功能,提升应用性能,为用户提供更好的体验。...
在"Struts + Hibernate 分页实现"这个项目中,重点在于如何在Web应用中整合这两个框架,并实现数据的分页显示。分页是大型数据集处理时常见的需求,它能够帮助用户更有效地浏览和管理大量信息,避免一次性加载所有...
本篇文章将详细讲解如何在基于Struts2、Spring和Hibernate的项目中实现分页功能。 首先,我们从DAO层开始。在`MemberDao`接口中,我们定义了两个关键的方法,一个是用于分页查询,另一个是获取所有记录的数量。这两...
在"Struts+Hibernate分页及条件查询练习"这个项目中,开发者可能采用了以下步骤: 1. **配置Struts和Hibernate**:首先,需要在项目中引入Struts和Hibernate的相关库,配置Struts的struts-config.xml文件和...
1. **配置Hibernate分页**: 在Hibernate中,我们通常使用`Criteria`或`Query` API进行分页查询。`Criteria`提供了一种更面向对象的方式来执行SQL查询,而`Query` API则对应于原生的SQL语句。在这些API中,我们可以...
hibernate分页 博文链接:https://iomo.iteye.com/blog/243518
本篇主要围绕"Hibernate分页查询效果"这一主题,深入探讨如何利用Hibernate框架实现高效、便捷的分页功能。 首先,Hibernate是一个优秀的Java持久化框架,它提供了ORM(对象关系映射)解决方案,使得开发者可以使用...
这个"高效率的dw+spring+hibernate分页演示例子"提供了一个实用的示例,展示了如何将这三个框架整合起来,以实现高效的数据分页功能。 首先,让我们来逐一了解这三个技术: 1. **DWR (Direct Web Remoting)**:DWR...
### Hibernate分页基础 1. **Criteria API**:Hibernate的Criteria API允许我们创建动态查询,同时也支持分页。通过设置`setFirstResult()`和`setMaxResults()`方法,可以实现分页效果。例如: ```java Criteria ...
综上所述,"struts+hibernate分页"涉及到的主要是如何在Struts的控制层和Hibernate的数据层之间协调处理分页请求,以及在DAO层利用Hibernate的特性实现数据库查询的分页。理解并掌握这两个框架的分页机制,对于开发...
java 实现的一个简单的hibernate分页类 可以设置,从某一条开始取、显示的条数 不依赖struts spring
本教程将通过一个具体的“hibernate分页例子”来深入理解如何在Hibernate中实现分页功能。 在实际应用中,当数据量大到一定程度时,一次性加载所有数据会导致内存压力过大,影响系统性能。因此,分页查询成为一种...
本主题将探讨如何在Hibernate分页类和JDBC的SQL分页方法之间实现完美的融合,以提高性能并提供更好的用户体验。 首先,让我们了解一下Hibernate的分页功能。Hibernate提供了一种方便的方式来处理分页查询,通过...