分頁查詢數據庫方法 /** * 分頁查詢方法 * @param sql,pageNO,maxResult * @return List */ public List<Object> queryPageSql(String hql, int pageNo, int pageSize){ try{ Session session=HibernateUtil.getSession(); Query q=session.createQuery(hql); //Hibernate查詢起始位置 q.setFirstResult((pageNo-1)*pageSize); //從起始位查詢多少條數據 q.setMaxResults(pageSize); List<Object> list=(List<Object>)q.list(); return list; }catch(Exception e){ e.printStackTrace(); }finally{ HibernateUtil.closeSession(); } return null; } 分頁實體類PageModel,主要的分頁查詢方法pageQuery PACKAGE SSH.GX; import java.util.List; import ssh.Tb.User; public class PageModel { private int totalRecords; //數據總條數 private int pageNo; //當前頁 private int pageSize; //每頁多少條 private List<Object> list;//查詢到的數據集合 private int totalPageNo;//共多少頁 /** * 獲取上一頁 */ public int getPreviousPageNo(){ if(pageNo>1){ return pageNo-1; }else{ return 1; } } /** * 獲取下一頁 */ public int getNextPageNo(){ if(pageNo>=getTotalPageNo()){ //若是總頁數爲0這返回1,不然返回總頁數 return getTotalPageNo()==0?1:getTotalPageNo(); }else{ return pageNo+1; } } /** * 獲取分頁集合函數 * @param pageModel * @param hql * @param pageTab * @return PageModel * @see pageTab控制查詢的1:下一頁;2:上一頁;3:第一頁;4:最後一頁 */ public PageModel pageQuery(PageModel pageModel,String hql,int pageTab){ HibernateDB hdb=new HibernateDB(); //查詢數據的總條數並賦值給totalRecords變量 List<Object> lists=(List<Object>)hdb.querySql(hql); totalRecords=lists.size(); //給沒有查詢條數賦值默認值 if(pageModel.getPageSize()==0){pageModel.setPageSize(5);} //執行獲取下一頁 if(pageTab==1){ //執行獲取下一頁 if(pageModel.getPageNo()==0){ pageModel.setPageNo(1); }else{ pageModel.setPageNo(pageModel.getNextPageNo()); } }else if(pageTab==2){ //執行獲取上一頁 if(pageModel.getPageNo()==0) pageModel.setPageNo(1); else pageModel.setPageNo(pageModel.getPreviousPageNo()); }else if (pageTab==3){ //獲取第一頁 pageModel.pageNo=1; }else{ //獲取最後一頁 pageModel.pageNo=pageModel.getTotalPageNo(); } //查詢分頁數據 list=(List<Object>)hdb.queryPageSql(hql,pageModel.getPageNo(),pageModel.getPageSize()); return pageModel; } public int getTotalRecords() { return totalRecords; } public void setTotalRecords(int totalRecords) { this.totalRecords = totalRecords; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalPageNo() { return totalPageNo=(totalRecords + pageSize -1)/pageSize; } public void setTotalPageNo(int totalPageNo) { this.totalPageNo = totalPageNo; } public List<Object> getList() { return list; } public void setList(List<Object> list) { this.list = list; } } Action類查詢,必須使用spring配置文件將PageModel類注入到Action中。 /** * 分頁查詢下一頁 * @return */ public String nextQuery(){ pageModel.pageQuery(pageModel, "from User", 1); return "query"; } /** * 分頁查詢上一頁 * @return */ public String backQuery(){ pageModel.pageQuery(pageModel, "from User", 2); return "query"; } /** * 分頁查詢第一頁 * @return */ public String firstQuery(){ pageModel.pageQuery(pageModel, "from User", 3); return "query"; } /** * 分頁查詢最後一頁 * @return */ public String endQuery(){ pageModel.pageQuery(pageModel, "from User",4); return "query"; } Struts.xml文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <!-- 配置Struts支持動態Action, 必須存在 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- strict-method-invocation在2.5版本,爲了限制DMI, 默認啓用了嚴格的方法訪問,不想啓用要改成false, 若是啓用嚴格訪問模式,沒法實現動態Action --> <package name="mypackage" extends="struts-default" strict-method-invocation="false"> <action name="user*" class="ssh.action.UserAction" method="{1}"> <result name="success"> /jsp/mian.jsp</result> <result name="login"> index.jsp </result> <result name="saveerror">/jsp/save.jsp</result> <result name="query">/jsp/query.jsp</result> </action> </package> </struts> query.jsp頁面顯示 <table> <s:iterator value="pageModel.list" id="u" > <tr> <td><s:property value="#u.id"/></td> <td><s:property value="#u.username"/></td> </tr> </s:iterator> <tr> <td><s:a href="userfirstQuery">首頁</s:a> <s:a href="userbackQuery?pageModel.pageNo=%{pageModel.pageNo}">上一頁</s:a> <s:property value="pageModel.pageNo" />/<s:property value="pageModel.totalPageNo"/> <s:a href="usernextQuery?pageModel.pageNo=%{pageModel.pageNo}">下一頁</s:a> <s:a href="userendQuery">末頁</s:a></td> <td></td> </tr> </table>