Struts2+Hibernate實現(xiàn)數(shù)據(jù)分頁的方法
本文實例講述了Struts2+Hibernate實現(xiàn)數(shù)據(jù)分頁的方法。分享給大家供大家參考,具體如下:
1.用Hibernate實現(xiàn)分頁技術(shù):
/** * 使用hql語句進行分頁查詢 * @param hql 需要查詢的hql語句 * @param offset 第一條記錄索引 * @param pageSize 每頁需要顯示的記錄數(shù) * @return 當前頁的所有記錄 */ @SuppressWarnings("unchecked") public List findByPage(final String hql, final int offset, final int pageSize) { //通過一個HibernateCallback對象來執(zhí)行查詢 List list = getHibernateTemplate() .executeFind(new HibernateCallback() { //實現(xiàn)HibernateCallback接口必須實現(xiàn)的方法 public Object doInHibernate(Session session) throws HibernateException, SQLException { //執(zhí)行Hibernate分頁查詢 List result = session.createQuery(hql) .setFirstResult(offset) .setMaxResults(pageSize) .list(); return result; } }); return list; } // 獲取總記錄數(shù) public int getRows(String hql) { return getHibernateTemplate().find(hql).size(); }
2.在Action里調(diào)用Hibernate實現(xiàn)分頁技術(shù)的方法,并跳轉(zhuǎn)到顯示界面:
// 分頁 @SuppressWarnings("unchecked") public String paging() { String hql = "from Income"; // 分頁的數(shù)據(jù)表 int pageSize = 3; // 每頁顯示記錄的條數(shù) int allRows = service.getRows(hql); // 記錄總數(shù) int allPage = 0; // 總頁數(shù) int offset = getPage() + 1; // 第一條記錄的索引 /*if (rows % size != 0) { pageSize = rows / size + 1; } else { pageSize = rows / size; }*/ allPage = (allRows - 1) / pageSize + 1; // 計算總頁數(shù) List<Income> income = service.findByPage(hql, (offset-1)*pageSize, pageSize); request.setAttribute("allPage", allPage); request.setAttribute("offset", offset); request.setAttribute("income", income); return "paging"; }
3.struts.xml配置:
<action name="income" class="com.xqh.action.IncomeAction"> <!-- 為兩個邏輯視圖配置視圖頁面 --> <result name="error">/error.jsp</result> <result name="paging">/income/income_list.jsp</result> <result name="update">/income/income_edit.jsp</result> </action>
4.顯示界面income_list.jsp
<%@ page language="java" pageEncoding="GBK"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <title>收入列表</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <link rel="stylesheet" type="text/css" href="../images/styles.css"> </head> <body> <div class="div1"> <table width="100%" cellpadding="0" cellspacing="0" border="0" align="center"> <tr> <td class="td_title1"> ·當前位置:收入管理>>查看收入 </td> </tr> <tr> <td bgcolor="#FFFFFF" height="50"> <br> <table border="1" align="center" width="700" cellpadding="1" cellspacing="1" bgcolor="#036500" bordercolor="#FFFFF"> <tr bgcolor="#FFFFFF"> <td class="tb_tl" align="center"> 收入編號 </td> <td class="tb_tl" align="center"> 日期 </td> <td class="tb_tl" align="center"> 方式 </td> <td class="tb_tl" align="center"> 金額 </td> <td class="tb_tl" align="center"> 項目 </td> <td class="tb_tl" align="center"> 來源 </td> <td class="tb_tl" align="center"> 人員 </td> <td class="tb_tl" align="center"> 備注 </td> <td class="tb_tl" align="center"> 操作 </td> </tr> <s:iterator value="#request.income"> <tr bgcolor="#FFFFFF"> <td align="center"><s:property value="id"/></td> <td align="center"><s:date name="date" format="yyyy-MM-dd"/></td> <td align="center"><s:property value="style"/></td> <td align="center"><s:property value="money"/></td> <td align="center"><s:property value="project"/></td> <td align="center"><s:property value="source"/></td> <td align="center"><s:property value="personnel"/></td> <td align="center"><s:property value="remarks"/></td> <td align="center"> <a href="javascript:if(confirm('確定要刪除${id}嗎?'))location='income!del?id=${id}'">刪除</a> <a href="javascript:if(confirm('確定要修改${id}嗎?'))location='income!updateTo?id=${id}'">修改</a> </td> </tr> </s:iterator> </table> <center> 總共有${allPage}頁, 當前是第${offset}頁 <a href="income!paging?page=0"><font size="2" color="blue">首頁</font></a> <a href="javascript:if(${offset}>1)location='income!paging?page=${page-1}'"><font size="2" color="red">上一頁</font></a> <a href="javascript:if(${offset}<${allPage})location='income!paging?page=${page+1}'"><font size="2" color="red">下一頁</font></a> <a href="income!paging?page=${allPage-1}"><font size="2" color="blue">末頁</font></a> </center> </td> </tr> </table> </div> </body>
5.分頁結(jié)果:
本文章未提供底層數(shù)據(jù)庫中的實現(xiàn),但只要掌握分頁原理,相信這問題不大。具體分頁原理可參照前面一篇:《Hibernate框架數(shù)據(jù)分頁技術(shù)實例分析》
希望本文所述對大家基于Hibernate框架的Java程序設(shè)計有所幫助。
- 在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對其優(yōu)化
- Java的Struts框架中Action的編寫與攔截器的使用方法
- 關(guān)于Struts2文件上傳與自定義攔截器
- java Struts2 在攔截器里的跳轉(zhuǎn)問題
- 使用MyEclipse 開發(fā)struts2框架實現(xiàn)登錄功能(結(jié)構(gòu)教程)
- 詳解在Java的Struts2框架中配置Action的方法
- Struts2中Action中是否需要實現(xiàn)Execute方法
- Struts2 自定義下拉框Tag標簽
- Java以struts2為例介紹如何實現(xiàn)圖片上傳
- struts2過濾器和攔截器的區(qū)別分析
相關(guān)文章
Java處理時間格式CST和GMT轉(zhuǎn)換方法示例
這篇文章主要給大家介紹了關(guān)于Java處理時間格式CST和GMT轉(zhuǎn)換方法的相關(guān)資料,相信很多小伙伴在時間格式轉(zhuǎn)換的時候非常頭疼,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2023-09-09Java基于迭代器模式實現(xiàn)的訪問人員列表操作示例
這篇文章主要介紹了Java基于迭代器模式實現(xiàn)的訪問人員列表操作,簡單描述了迭代器模式的概念、原理以及使用迭代器模式實現(xiàn)訪問人員列表的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05基于Java設(shè)計一個高并發(fā)的秒殺系統(tǒng)
這篇文章主要為大家詳細介紹了如何基于Java設(shè)計一個高并發(fā)的秒殺系統(tǒng),文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下2023-10-10教你用MAT工具分析Java堆內(nèi)存泄漏問題的解決方法
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著如何使用MAT工具分析Java堆內(nèi)存泄漏問題的解決方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下2021-06-06Springboot集成ClickHouse及應(yīng)用場景分析
這篇文章主要介紹了Springboot集成ClickHouse的實例代碼,本文通過應(yīng)用場景實例代碼介紹了整合springboot的詳細過程,感興趣的朋友跟隨小編一起看看吧2022-02-02基于Java+SpringBoot實現(xiàn)人臉識別搜索
人臉識別搜索技術(shù)作為現(xiàn)代計算機視覺領(lǐng)域的重要研究方向之一,已經(jīng)在多個領(lǐng)域展現(xiàn)出巨大的應(yīng)用潛力,隨著信息技術(shù)的飛速發(fā)展,人臉識別搜索在多個領(lǐng)域得到了廣泛關(guān)注和應(yīng)用,本文旨在探討人臉識別搜索技術(shù)的背景、原理以及其在實際應(yīng)用中的意義和挑戰(zhàn)2023-08-08