<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    每日一得

    不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發(fā)
    最近關(guān)心的內(nèi)容:SSH,seam,flex,敏捷,TDD
    本站的官方站點(diǎn)是:顛覆軟件

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
    注:本文繼續(xù)分頁的上一篇 關(guān)于分頁,標(biāo)簽,緩存
    hibernate分頁有現(xiàn)成的支持:

    query.setFirstResult(start);
    query.setMaxResults(rowNum);?


    MySql如下:
    select?*?from?table?where??limit?start,rowNum;


    Oracle如下
    select?*?from?table?where??and?rowid?not?in(select?rowid?from?t_table?where? .... and? rownum<=?(pageIndex-1)?*?size)
    and?rownum?<=?size;

    PageBean以前是設(shè)置currentPage,然后在頁面里自己判斷上一頁下一頁是什么,后來發(fā)現(xiàn)純粹多余,完全可以把目標(biāo)頁寫進(jìn)去,而且參數(shù)也統(tǒng)一了,以前頁面?zhèn)鞯紸ction有好幾個(gè)參數(shù):

    if(method.equals("lastPage")){

    }
    else?if(method.equals("nextPage")){

    }
    else?if(method.equals("targetPage")){
    ????
    //.
    }


    現(xiàn)在統(tǒng)一一個(gè)參數(shù)就是pageIndex,爽多了? :)
    PageBean代碼如下:
    int?currentPage?=?1;//當(dāng)前頁:Action控制
    ????int?totalPages?=?0;//總頁數(shù)?:自己運(yùn)算
    ????public?static?int?pageRecorders?=?10;?//每頁記錄數(shù),默認(rèn)為10,可以在初始化的時(shí)候修改//總數(shù)據(jù)數(shù)
    ????int?pageStartRow?=?0;?//每頁的起始數(shù)? [這個(gè)字段可以去掉]
    ????int?pageEndRow?=?0;?//每頁顯示數(shù)據(jù)的終止數(shù)? [這個(gè)字段也可以去掉]
    ????boolean?hasNextPage?=?false;?//是否有下一頁:自己運(yùn)算
    ????boolean?hasPreviousPage?=?false;?//是否有前一頁?:自己運(yùn)算
    ????List?objList?=?new?ArrayList();//存放欲展示的對象列表
    ????int?totalRows;//總記錄數(shù),由底層service提供

    ????
    //增加上一頁索引?[directly?to?target?page]
    ????private?int?lastPageIndex?=?1;
    ????
    //增加下一頁索引?[directly?to?target?page]
    ????private?int?nextPageIndex?=?1;

    ????
    public?int?getLastPageIndex()?{
    ????????
    return?currentPage?-?1;
    ????}

    ????
    public?int?getNextPageIndex()?{
    ????????
    return?currentPage?+?1;
    ????}


    ????
    //是否有上一頁
    ????public?boolean?isHasPreviousPage()?{
    ????????
    return?(currentPage?>?1???true?:?false);
    ????}

    ????
    //共有多少頁,service只提供有多少條記錄,多少頁數(shù)由PageBean自己運(yùn)算
    ????public?int?getTotalPages()?{
    ????????
    if?(totalRows?<=?pageRecorders)?return?1;
    ????????
    return?(totalRows?%?pageRecorders?==?0???totalRows?/?pageRecorders?:?totalRows?/?pageRecorders?+?1);
    ????}

    ????
    public?int?getCurrentPage()?{
    ????????
    return?currentPage;
    ????}

    ????
    public?int?getPageEndRow()?{
    ????????
    return?pageEndRow;
    ????}

    ????
    //是否有下一頁
    ????public?boolean?isHasNextPage()?{
    ????????
    return?(currentPage?<?this.getTotalPages()???true?:?false);
    ????}

    ????
    public?int?getTotalRows()?{
    ????????
    return?totalRows;
    ????}

    ????
    public?int?getPageStartRow()?{
    ????????
    return?pageStartRow;
    ????}

    ????
    public?int?getPageRecorders()?{
    ????????
    return?pageRecorders;
    ????}

    ????
    public?void?setObjList(List?objList)?{
    ????????
    this.objList?=?objList;
    ????}

    ????
    public?void?setHasPreviousPage(boolean?hasPreviousPage)?{
    ????????
    this.hasPreviousPage?=?hasPreviousPage;
    ????}

    ????
    public?void?setTotalPages(int?totalPages)?{
    ????????
    this.totalPages?=?totalPages;
    ????}

    ????
    public?void?setCurrentPage(int?currentPage)?{
    ????????
    this.currentPage?=?currentPage;
    ????}

    ????
    public?void?setPageEndRow(int?pageEndRow)?{
    ????????
    this.pageEndRow?=?pageEndRow;
    ????}

    ????
    public?void?setHasNextPage(boolean?hasNextPage)?{
    ????????
    this.hasNextPage?=?hasNextPage;
    ????}

    ????
    public?void?setTotalRows(int?totalRows)?{
    ????????
    this.totalRows?=?totalRows;
    ????}

    ????
    public?void?setPageStartRow(int?pageStartRow)?{
    ????????
    this.pageStartRow?=?pageStartRow;
    ????}

    ????
    public?void?setPageRecorders(int?pageRecorders)?{
    ????????
    this.pageRecorders?=?pageRecorders;
    ????}

    ????
    public?List?getObjList()?{
    ????????
    return?objList;
    ????}
    }

    在action中負(fù)責(zé)把pageIndex傳給PageBean,以及通過service得到的記錄總數(shù)傳給pageBean就OK了


    補(bǔ)充:另,在IDEA中文站上看到一篇文章?
    分頁,心中的痛? ????? 提到用一個(gè)統(tǒng)一的接口來規(guī)范:
    代碼如下:
    public?interface?Page?{
    boolean?isFirstPage();
    boolean?isLastPage();
    boolean?hasNextPage();
    boolean?hasPreviousPage();
    int?getLastPageNumber();
    Object?getThisPageElements();
    int?getTotalNumberOfElements();
    int?getThisPageFirstElementNumber();
    int?getThisPageLastElementNumber();
    int?getNextPageNumber();
    int?getPreviousPageNumber();
    int?getPageSize();
    int?getThisPageNumber?();
    }

    個(gè)人感覺思想挺好,不過我還是喜歡用一個(gè)PageBean類就足夠了,沒必要搞復(fù)雜了,在PageBean中其實(shí)是currentPage為核心.

    一個(gè)工具能夠在任何地方都能容易的嵌入進(jìn)去,這就很小巧了,也就夠用了.? :)
    posted on 2006-05-08 22:46 Alex 閱讀(1197) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 狼人大香伊蕉国产WWW亚洲| 亚洲欭美日韩颜射在线二| 久久久无码精品亚洲日韩软件 | 国产亚洲福利精品一区二区| 蜜桃成人无码区免费视频网站| 亚洲午夜福利精品久久| 亚洲精品成a人在线观看☆| 免费看黄视频网站| 中中文字幕亚洲无线码| 大地资源免费更新在线播放 | 狠狠综合亚洲综合亚洲色| 免费大香伊蕉在人线国产| 猫咪免费人成在线网站| 亚洲国产专区一区| 国产一级一毛免费黄片| 亚洲色图在线观看| 国产情侣激情在线视频免费看| 亚洲性线免费观看视频成熟| 日韩视频免费在线| japanese色国产在线看免费| 亚洲国产三级在线观看| 69堂人成无码免费视频果冻传媒| 亚洲熟妇AV一区二区三区宅男| 精品国产免费一区二区| 91免费国产视频| 亚洲免费二区三区| 又大又粗又爽a级毛片免费看| 很黄很污的网站免费| 亚洲成人黄色在线观看| 四虎永久免费观看| 久久国产精品免费网站| 亚洲色大成网站www久久九| 亚洲性在线看高清h片| 免费福利在线播放| 免费人成视频在线播放| 久久亚洲精品中文字幕无码| 最近中文字幕无免费视频| 黄色短视频免费看| avtt天堂网手机版亚洲| 亚洲综合精品香蕉久久网| 野花高清在线电影观看免费视频|