前言
硬着頭皮看看... 這些都是發現在一些項目裡面的一些代碼片段。
正文
案發現場:
項目查詢資料需要分頁查詢,是以引入了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 ,但是想支援查詢所有(不分頁):
傳入參數pageSizeZero (true),那麼這時候 傳入的 pageSize如果為0,那麼就是查詢全部。
reasonable參數如果設定為true傳入:
如果pageNum<1會查詢第一頁,如果pageNum>pages(總頁數)會查詢最後一頁
count參數如果設定為true傳入: