需要一个辅助类,记录总页数,每页显示记录数,当前页,总记录数。
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>