Struts2+Hibernate實(shí)現(xiàn)數(shù)據(jù)分頁(yè)的方法
本文實(shí)例講述了Struts2+Hibernate實(shí)現(xiàn)數(shù)據(jù)分頁(yè)的方法。分享給大家供大家參考,具體如下:
1.用Hibernate實(shí)現(xiàn)分頁(yè)技術(shù):
/**
* 使用hql語(yǔ)句進(jìn)行分頁(yè)查詢(xún)
* @param hql 需要查詢(xún)的hql語(yǔ)句
* @param offset 第一條記錄索引
* @param pageSize 每頁(yè)需要顯示的記錄數(shù)
* @return 當(dāng)前頁(yè)的所有記錄
*/
@SuppressWarnings("unchecked")
public List findByPage(final String hql,
final int offset, final int pageSize)
{
//通過(guò)一個(gè)HibernateCallback對(duì)象來(lái)執(zhí)行查詢(xún)
List list = getHibernateTemplate()
.executeFind(new HibernateCallback()
{
//實(shí)現(xiàn)HibernateCallback接口必須實(shí)現(xiàn)的方法
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
//執(zhí)行Hibernate分頁(yè)查詢(xún)
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實(shí)現(xiàn)分頁(yè)技術(shù)的方法,并跳轉(zhuǎn)到顯示界面:
// 分頁(yè)
@SuppressWarnings("unchecked")
public String paging() {
String hql = "from Income"; // 分頁(yè)的數(shù)據(jù)表
int pageSize = 3; // 每頁(yè)顯示記錄的條數(shù)
int allRows = service.getRows(hql); // 記錄總數(shù)
int allPage = 0; // 總頁(yè)數(shù)
int offset = getPage() + 1; // 第一條記錄的索引
/*if (rows % size != 0) {
pageSize = rows / size + 1;
} else {
pageSize = rows / size;
}*/
allPage = (allRows - 1) / pageSize + 1; // 計(jì)算總頁(yè)數(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">
<!-- 為兩個(gè)邏輯視圖配置視圖頁(yè)面 -->
<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">
·當(dāng)前位置:收入管理>>查看收入
</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">
收入編號(hào)
</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">
項(xiàng)目
</td>
<td class="tb_tl" align="center">
來(lái)源
</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('確定要?jiǎng)h除${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}頁(yè), 當(dāng)前是第${offset}頁(yè)
<a href="income!paging?page=0"><font size="2" color="blue">首頁(yè)</font></a>
<a href="javascript:if(${offset}>1)location='income!paging?page=${page-1}'"><font size="2" color="red">上一頁(yè)</font></a>
<a href="javascript:if(${offset}<${allPage})location='income!paging?page=${page+1}'"><font size="2" color="red">下一頁(yè)</font></a>
<a href="income!paging?page=${allPage-1}"><font size="2" color="blue">末頁(yè)</font></a>
</center>
</td>
</tr>
</table>
</div>
</body>
5.分頁(yè)結(jié)果:

本文章未提供底層數(shù)據(jù)庫(kù)中的實(shí)現(xiàn),但只要掌握分頁(yè)原理,相信這問(wèn)題不大。具體分頁(yè)原理可參照前面一篇:《Hibernate框架數(shù)據(jù)分頁(yè)技術(shù)實(shí)例分析》
希望本文所述對(duì)大家基于Hibernate框架的Java程序設(shè)計(jì)有所幫助。
- 在Java的Struts中判斷是否調(diào)用AJAX及用攔截器對(duì)其優(yōu)化
- Java的Struts框架中Action的編寫(xiě)與攔截器的使用方法
- 關(guān)于Struts2文件上傳與自定義攔截器
- java Struts2 在攔截器里的跳轉(zhuǎn)問(wèn)題
- 使用MyEclipse 開(kāi)發(fā)struts2框架實(shí)現(xiàn)登錄功能(結(jié)構(gòu)教程)
- 詳解在Java的Struts2框架中配置Action的方法
- Struts2中Action中是否需要實(shí)現(xiàn)Execute方法
- Struts2 自定義下拉框Tag標(biāo)簽
- Java以struts2為例介紹如何實(shí)現(xiàn)圖片上傳
- struts2過(guò)濾器和攔截器的區(qū)別分析
相關(guān)文章
java 實(shí)現(xiàn)最小二叉樹(shù)堆排序的實(shí)例
這篇文章主要介紹了java 實(shí)現(xiàn)最小二叉樹(shù)堆排序的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09
Java處理時(shí)間格式CST和GMT轉(zhuǎn)換方法示例
這篇文章主要給大家介紹了關(guān)于Java處理時(shí)間格式CST和GMT轉(zhuǎn)換方法的相關(guān)資料,相信很多小伙伴在時(shí)間格式轉(zhuǎn)換的時(shí)候非常頭疼,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Java基于迭代器模式實(shí)現(xiàn)的訪問(wèn)人員列表操作示例
這篇文章主要介紹了Java基于迭代器模式實(shí)現(xiàn)的訪問(wèn)人員列表操作,簡(jiǎn)單描述了迭代器模式的概念、原理以及使用迭代器模式實(shí)現(xiàn)訪問(wèn)人員列表的相關(guān)操作技巧,需要的朋友可以參考下2018-05-05
基于Java設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何基于Java設(shè)計(jì)一個(gè)高并發(fā)的秒殺系統(tǒng),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下2023-10-10
教你用MAT工具分析Java堆內(nèi)存泄漏問(wèn)題的解決方法
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著如何使用MAT工具分析Java堆內(nèi)存泄漏問(wèn)題的解決方法展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Springboot集成ClickHouse及應(yīng)用場(chǎng)景分析
這篇文章主要介紹了Springboot集成ClickHouse的實(shí)例代碼,本文通過(guò)應(yīng)用場(chǎng)景實(shí)例代碼介紹了整合springboot的詳細(xì)過(guò)程,感興趣的朋友跟隨小編一起看看吧2022-02-02
Java對(duì)象轉(zhuǎn)json的方法過(guò)程解析
這篇文章主要介紹了Java對(duì)象轉(zhuǎn)json的方法過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
基于Java+SpringBoot實(shí)現(xiàn)人臉識(shí)別搜索
人臉識(shí)別搜索技術(shù)作為現(xiàn)代計(jì)算機(jī)視覺(jué)領(lǐng)域的重要研究方向之一,已經(jīng)在多個(gè)領(lǐng)域展現(xiàn)出巨大的應(yīng)用潛力,隨著信息技術(shù)的飛速發(fā)展,人臉識(shí)別搜索在多個(gè)領(lǐng)域得到了廣泛關(guān)注和應(yīng)用,本文旨在探討人臉識(shí)別搜索技術(shù)的背景、原理以及其在實(shí)際應(yīng)用中的意義和挑戰(zhàn)2023-08-08

