天天看點

Java中實作DataTable工具類,并利用其實作簡單分頁控件。

一、工具類的使用

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,如需轉載請自行聯系原作者