<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
    主站蜘蛛池模板: 免费一级毛片在线观看| jizzjizz亚洲日本少妇| 亚洲国产精品国产自在在线| 最近2019年免费中文字幕高清| 日本视频免费观看| 亚洲影院天堂中文av色| 亚洲视频中文字幕| 亚洲无码在线播放| 日韩精品电影一区亚洲| 中国在线观看免费高清完整版| 免费无码av片在线观看| 美女隐私免费视频看| 亚洲久悠悠色悠在线播放| 亚洲妇熟XXXX妇色黄| 中文字幕专区在线亚洲| 免费人成年激情视频在线观看| 午夜宅男在线永久免费观看网| 老司机69精品成免费视频| 精品97国产免费人成视频| 国产亚洲漂亮白嫩美女在线| 久久夜色精品国产噜噜亚洲a| 亚洲第一精品电影网| 亚洲AV无码久久精品色欲| 亚洲色大成网站WWW久久九九| 亚洲成a人无码av波多野按摩 | 亚洲人成无码网站久久99热国产| 69成人免费视频无码专区| 国产卡一卡二卡三免费入口| 91短视频免费在线观看| 精品久久8x国产免费观看| 久久精品无码专区免费青青| 国产成人精品一区二区三区免费| 十八禁视频在线观看免费无码无遮挡骂过| 免费看一级高潮毛片| 羞羞漫画登录页面免费| 免费中文字幕视频| 四虎影视在线看免费观看| 72pao国产成视频永久免费| xvideos永久免费入口| 久久免费国产精品| a毛片免费播放全部完整|