一、工具類的使用
1.1 DataTable 工具類的使用
1.1.1 DataTable簡單解析
顧名思義,DataTable其實就是一張虛拟資料表,用于存儲由資料庫select出來的資料。
支援多表查詢,以及不同資料庫查詢資料表的連接配接。
DataTable 其實 就是一個List,資料表包含許多行,是以我們List定義為DataRow
而DataRow 又會包含很多列: DataColumn(鍵值對)
現在簡單畫一個圖示:
DataColumn
資料表DataTable
資料行DataRow
資料列/資料單元
1.1.2 簡單查詢使用說明(簡單查詢,内連接配接關聯查詢)
例:現在我們有兩張關系表(父、子) :news為newsType 字表
我們利用DataTable做一次查詢
查詢結果為:
其中DataTable.outTable(dt);為 封裝在DataTable類中的一個靜态方法,可以輸出一個資料表對象,具體請自己參考代碼。
1.1.3 雙資料庫查詢(用于雙資料庫關聯查詢)
由于我們會經常操作雙資料庫,也會 常常遇到關聯字段查詢問題,是以DataTable中 封裝了一個用于資料表連接配接的靜态方法。
以sql server 2005 中案件表CaseView以及Oracle資料庫中卷宗考評為例。
兩表有一公共字段為案件編号,在2005中為id ,在oracle中為 ajbh。
現在寫一查詢将兩資料庫中表合一。
其中 連接配接的具體方法詳情,請大家自己去看工具類中方法定義。
1.1.4 頁面中DataTable的使用
以卷宗管理界面為例:
我們對于Action中擷取DataTable代碼不說,單獨看看前台如何使用:
Eval()方法用于輸出一行中對應某列來的值,具體 方法 請 大家參考工具類
1.2 分頁工具類PageUtil的使用
1.2.1 PageUtil簡單解析
PageUtil 類包含許多方法,我這裡通過一個例子告訴大家如何使用即可,想知道内部實行的同學自己去分析代碼,注釋很完善。
1.2.2 如何分頁?
界面展示 :
對應Action:
核心代碼1:
PageUtil page = new PageUtil(10); // 分頁控件,首先定義其頁面大小
核心代碼2:
前台頁面使用:
核心界面部分:
對應工具類中方法,有興趣的 朋友就自己去看吧:
寫的 不好,但是用起來可能還有有一定好處,
大家多批評
對應分頁代碼:
package cdu.yas.xykps.util;
/**
* @功能描述 通用分頁工具類
* @可能的錯誤
* @作者 葉小钗
* @修改說明
* @修改人
*/
public class PageUtil {
DataTable dt;// 要傳回的資料表
int allRow;// 資料表總行數,總記錄數
int totalPage;// 一共多少頁
int pageIndex;// 目前頁索引,目前第幾頁
// 基礎資料設定
int pageSize; // 每頁記錄數,每頁有多少資料行
boolean isFirstPage;// 目前是否第一頁
boolean isLastPage;// 目前是否最後一頁
// 人性化設定
String firstPageText = "首頁";// 首頁名稱設定
String lastPageText = "尾頁";// 尾頁名稱設定
String prevPageText = "上一頁";// 上一頁名字設定
String nextPageText = "下一頁";// 下一頁名字設定
public PageUtil() {
this.pageSize = 10;
this.pageIndex = 1;
}
public PageUtil(int pageSize) {
this.pageSize = pageSize;
public PageUtil(String firstPageText, String prevPageText,
String nextPageText, String lastPageText, int pageSize) {
this.firstPageText = firstPageText;
this.lastPageText = lastPageText;
this.prevPageText = prevPageText;
this.nextPageText = nextPageText;
// 初始化
public void init() {
totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow
/ pageSize + 1;
this.isFirstPage = isFirstPage();
this.isLastPage = isLastPage();
// 判斷目前是否第一頁
private boolean isFirstPage() {
return pageIndex == 1;
// 判斷目前是否最後一頁
private boolean isLastPage() {
return pageIndex == totalPage;
// 最終傳回菜單
public String getToolBar(String urlName, String objectName) {
String o = objectName;
init();
String s = "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0' class='right-font08'><tr><td width='50%'>共 <span class='right-text09'>"
+ totalPage
+ "</span> 頁 | 第 <span class='right-text09'> "
+ pageIndex + "</span> 頁</td><td width='49%' align='right'>[ ";
if (isFirstPage)
s += firstPageText + " | " + prevPageText + " | ";
else {
s += " <a class='right-font08' href=" + urlName + "?" + o
+ ".pageIndex=1 >" + firstPageText + "</a> | ";
s += " <a class='right-font08' href=" + urlName + "?" + o
+ ".pageIndex=" + (pageIndex - 1) + ">" + prevPageText
+ "</a> | ";
}
if (isLastPage)
s += nextPageText + " | " + lastPageText + " ] </td></tr></table>";
+ ".pageIndex=" + (pageIndex + 1) + " >" + nextPageText
+ ".pageIndex=" + totalPage + ">" + lastPageText
+ "</a> ] </td></tr></table>";
return s;
public String getToolBar1(String urlName, String objectName) {
String s = "共 " + allRow + " 條記錄 共 " + totalPage + " 頁 目前第 "
+ pageIndex + " 頁 ";
s += firstPageText + " " + prevPageText + " ";
s += " <a href=" + urlName + "?" + o + ".pageIndex=1 > "
+ firstPageText + "</a> ";
s += " <a href=" + urlName + "?" + o + ".pageIndex="
+ (pageIndex - 1) + ">" + prevPageText + " </a> ";
s += nextPageText + " " + lastPageText + " ";
+ (pageIndex + 1) + " >" + nextPageText + "</a> ";
s += " <a href=" + urlName + "?" + o + ".pageIndex=" + totalPage
+ ">" + lastPageText + "</a> ";
public String getTool(String urlName, String objectName, String id) {
String s = "<table width='100%' border='0' align='center' cellpadding='0' cellspacing='0' ><tr>";
s += "<td width='55%' align='right'> ";
s += "[ " + prevPageText + " ] ";
s += " [ <a class='right-font08' href=" + urlName + "?caseId=" + id
+ "&" + o + ".pageIndex=" + (pageIndex - 1) + ">"
+ prevPageText + "</a> ] ";
s += " [ " + nextPageText + " ] ";
+ "&" + o + ".pageIndex=" + (pageIndex + 1) + " > "
+ nextPageText + "</a> ]";
s += "</td><td width='40%' align='right' >共 <span >" + totalPage
+ "</span> 頁 | 第 <span >" + pageIndex
+ "</span> 頁 </td><td width='5%' ></td>";
s += "</tr></table>";
// ///////// /////////////////////////////需要前台取的資料
public DataTable getDt() {
return dt;
public int getAllRow() {
return allRow;
public int getTotalPage() {
return totalPage;
public int getPageIndex() {
return pageIndex;
public int getPageSize() {
return pageSize;
public String getFirstPageText() {
return firstPageText;
public String getLastPageText() {
return lastPageText;
public String getPrevPageText() {
return prevPageText;
public String getNextPageText() {
return nextPageText;
public void setDt(DataTable dt) {
this.dt = dt;
public void setAllRow(int allRow) {
this.allRow = allRow;
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
public void setPageSize(int pageSize) {
public void setFirstPage(boolean isFirstPage) {
this.isFirstPage = isFirstPage;
public void setLastPage(boolean isLastPage) {
this.isLastPage = isLastPage;
public void setFirstPageText(String firstPageText) {
public void setLastPageText(String lastPageText) {
public void setPrevPageText(String prevPageText) {
public void setNextPageText(String nextPageText) {
//
}
本文轉自葉小钗部落格園部落格,原文連結http://www.cnblogs.com/yexiaochai/archive/2011/07/27/2118444.html,如需轉載請自行聯系原作者