`

hibernate分页

 
阅读更多

   需要一个辅助类,记录总页数,每页显示记录数,当前页,总记录数。

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;">&nbsp;</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分页查询小结

    Hibernate分页查询原理解读

    #### 三、Hibernate分页查询实现原理 ##### 3.1 使用SQL LIMIT实现分页 对于支持LIMIT关键字的数据库(例如MySQL),Hibernate会通过特定的方言(Dialect)来生成包含LIMIT关键字的SQL语句。具体实现如下: ```...

    hibernate分页查询 数据库连接

    此外,优化查询,避免N+1查询问题,合理设计实体关系,都能有效提升Hibernate分页查询的效率。 总结起来,Hibernate的分页查询和数据库连接管理是其强大功能的重要组成部分。正确理解和使用这些特性,能够帮助...

    hibernate分页Hibernate 分页的设计和编码

    标题与描述均提到了“Hibernate分页的设计和编码”,这表明文章主要聚焦于如何在Hibernate框架中实现数据分页功能。下面将详细解析这一主题的关键知识点。 ### Hibernate分页概念 Hibernate是Java环境下一个开放源...

    hibernate分页查询

    让我们深入探讨Hibernate分页查询的相关知识点。 一、Hibernate分页原理 Hibernate分页查询基于SQL的LIMIT和OFFSET子句,通过Session的createQuery或createSQLQuery方法创建查询,并设置FirstResult和MaxResults...

    strut2.0 + hibernate3.0 + jquery.datatables+mysql 5.0实现的 hibernate分页

    hibernate分页(无排序,搜索,仅仅分页显示),服务器端分页在datatables上展现,有关 datatables的知识请关注它的官网http://www.datatables.net/,datatables的功能很 全面。 2,建表的sql--studentinfo和插入...

    hibernate分页代码

    总结起来,"hibernate分页代码"是一个关于如何在Hibernate中进行分页查询的实践示例,适用于在MyEclipse环境下运行。通过Criteria API或HQL,开发者能够方便地实现分页功能,提升应用性能,为用户提供更好的体验。...

    Struts + Hibernate 分页实现

    在"Struts + Hibernate 分页实现"这个项目中,重点在于如何在Web应用中整合这两个框架,并实现数据的分页显示。分页是大型数据集处理时常见的需求,它能够帮助用户更有效地浏览和管理大量信息,避免一次性加载所有...

    struts2+spring+hibernate分页显示完整代码

    本篇文章将详细讲解如何在基于Struts2、Spring和Hibernate的项目中实现分页功能。 首先,我们从DAO层开始。在`MemberDao`接口中,我们定义了两个关键的方法,一个是用于分页查询,另一个是获取所有记录的数量。这两...

    Struts和Hibernate分页及查询

    在"Struts+Hibernate分页及条件查询练习"这个项目中,开发者可能采用了以下步骤: 1. **配置Struts和Hibernate**:首先,需要在项目中引入Struts和Hibernate的相关库,配置Struts的struts-config.xml文件和...

    使用hibernate分页查询

    1. **配置Hibernate分页**: 在Hibernate中,我们通常使用`Criteria`或`Query` API进行分页查询。`Criteria`提供了一种更面向对象的方式来执行SQL查询,而`Query` API则对应于原生的SQL语句。在这些API中,我们可以...

    hibernate分页技巧

    hibernate分页 博文链接:https://iomo.iteye.com/blog/243518

    Hibernate 分页查询效果

    本篇主要围绕"Hibernate分页查询效果"这一主题,深入探讨如何利用Hibernate框架实现高效、便捷的分页功能。 首先,Hibernate是一个优秀的Java持久化框架,它提供了ORM(对象关系映射)解决方案,使得开发者可以使用...

    高效率的dw+spring+hibernate分页演示例子

    这个"高效率的dw+spring+hibernate分页演示例子"提供了一个实用的示例,展示了如何将这三个框架整合起来,以实现高效的数据分页功能。 首先,让我们来逐一了解这三个技术: 1. **DWR (Direct Web Remoting)**:DWR...

    hibernate实现分页

    ### Hibernate分页基础 1. **Criteria API**:Hibernate的Criteria API允许我们创建动态查询,同时也支持分页。通过设置`setFirstResult()`和`setMaxResults()`方法,可以实现分页效果。例如: ```java Criteria ...

    struts+hibernate分页

    综上所述,"struts+hibernate分页"涉及到的主要是如何在Struts的控制层和Hibernate的数据层之间协调处理分页请求,以及在DAO层利用Hibernate的特性实现数据库查询的分页。理解并掌握这两个框架的分页机制,对于开发...

    java 实现的一个简单的hibernate分页类

    java 实现的一个简单的hibernate分页类 可以设置,从某一条开始取、显示的条数 不依赖struts spring

    hibernate分页例子.rar

    本教程将通过一个具体的“hibernate分页例子”来深入理解如何在Hibernate中实现分页功能。 在实际应用中,当数据量大到一定程度时,一次性加载所有数据会导致内存压力过大,影响系统性能。因此,分页查询成为一种...

    关于Hibernate分页类和jdbc的sql分页完美融合

    本主题将探讨如何在Hibernate分页类和JDBC的SQL分页方法之间实现完美的融合,以提高性能并提供更好的用户体验。 首先,让我们了解一下Hibernate的分页功能。Hibernate提供了一种方便的方式来处理分页查询,通过...

Global site tag (gtag.js) - Google Analytics