天天看點

【硬着頭皮】PageHelper 必須用來分頁?

前言

硬着頭皮看看... 這些都是發現在一些項目裡面的一些代碼片段。

正文

案發現場:

項目查詢資料需要分頁查詢,是以引入了PageHelper。

然後出現需求,一個接口需要分頁查詢,一個接口是查詢全部。

作案手法:

作案者機智地寫了兩個查詢接口,一個使用PageHelper做為分頁,一個不使用。

 盤問:

來自我的友好試探: 這麼寫着不累麼?

作案者平淡無奇: 那有啥辦法,這邊分頁查詢,那邊說不用分。

我:你不是用來PageHelper麼,為啥還要寫兩套?

作案者滿臉疑惑: 這是用來寫分頁的,還有不分頁的接口隻能分開寫。

我(若有所思):行吧,你把代碼送出我來教你用PageHelper。

改動:

在mybatis-config.xml檔案加入配置:

<plugins>

        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!--name:不用進行改變;value=”mysql”你所使用的資料庫類型【mysql/oracle】-->
          <property name="dialect" value="mysql" />

         <!-- 該參數預設為false設定為true時,會将RowBounds第一個參數offset當成pageNum頁碼使用 和startPage中的pageNum效果一樣-->

            <property name="offsetAsPageNum" value="true" />

            <!-- 該參數預設為false設定為true時,使用RowBounds分頁會進行count查詢-->

            <property name="rowBoundsWithCount" value="true" />

            <!-- 設定為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 (相當于沒有執行分頁查詢,但是傳回結果仍然是Page類型)-->

            <property name="pageSizeZero" value="true" />

            <!-- 3.3.0版本可用- 分頁參數合理化,預設false禁用 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 禁用合理化時,如果pageNum<1或pageNum>pages會傳回空資料-->

            <property name="reasonable" value="true" />

            <!-- 3.5.0版本可用- 為了支援startPage(Object params)方法 增加了一個`params`參數來配置參數映射,用于從Map或ServletRequest中取值 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用預設值-->

            <property name="params"

                      value="pageNum=start;pageSize=limit;pageSizeZero=zero;reasonable=heli;count=contsql" />

        </plugin>

    </plugins>      

代碼使用: 

【硬着頭皮】PageHelper 必須用來分頁?

簡單解釋:

如果想使用pageHelper ,但是想支援查詢所有(不分頁):

傳入參數pageSizeZero (true),那麼這時候 傳入的 pageSize如果為0,那麼就是查詢全部。

reasonable參數如果設定為true傳入:

如果pageNum<1會查詢第一頁,如果pageNum>pages(總頁數)會查詢最後一頁

count參數如果設定為true傳入:

繼續閱讀