PageHelper是國(guó)內(nèi)非常優(yōu)秀的一款開(kāi)源的mybatis分頁(yè)插件傻唾,它支持基本主流與常用的數(shù)據(jù)庫(kù)投慈,例如mysql、oracle冠骄、mariaDB伪煤、DB2、SQLite凛辣、Hsqldb等抱既。
本項(xiàng)目在 github 的項(xiàng)目地址:https://github.com/pagehelper/Mybatis-PageHelper
本項(xiàng)目在 gitosc 的項(xiàng)目地址:http://git.oschina.net/free/Mybatis_PageHelper
使用方法:
如上圖,首先maven導(dǎo)入相關(guān)依賴
其次使用 spring 的屬性配置方式扁誓,可以使用 plugins 屬性像下面這樣配置:
PageHelper.startPage 靜態(tài)方法調(diào)用(重點(diǎn))
在需要進(jìn)行分頁(yè)的 MyBatis 查詢方法前調(diào)用PageHelper.startPage 靜態(tài)方法即可防泵,緊跟在這個(gè)方法后的第一個(gè)MyBatis 查詢方法會(huì)被進(jìn)行分頁(yè)。
實(shí)例中的分頁(yè)查詢:
service:
controller:
分頁(yè)插件參數(shù)介紹
1. helperDialect :分頁(yè)插件會(huì)自動(dòng)檢測(cè)當(dāng)前的數(shù)據(jù)庫(kù)鏈接蝗敢,自動(dòng)選擇合適的分頁(yè)方式捷泞。 你可以配置helperDialect 屬性來(lái)指定分頁(yè)插件使用哪種方言。配置時(shí)寿谴,可以使用下面的縮寫(xiě)值:oracle , mysql , mariadb , sqlite , hsqldb , postgresql , db2 , sqlserver , informix , h2 , sqlserver2012 , derby特別注意:使用 SqlServer2012 數(shù)據(jù)庫(kù)時(shí)锁右,需要手動(dòng)指定為 sqlserver2012 ,否則會(huì)使用 SqlServer2005 的方式進(jìn)行分頁(yè)拭卿。你也可以實(shí)現(xiàn) AbstractHelperDialect 骡湖,然后配置該屬性為實(shí)現(xiàn)類(lèi)的全限定名稱即可使用自定義的實(shí)現(xiàn)方法。
2. offsetAsPageNum :默認(rèn)值為 false 峻厚,該參數(shù)對(duì)使用 RowBounds 作為分頁(yè)參數(shù)時(shí)有效响蕴。 當(dāng)該參數(shù)設(shè)置為true 時(shí),會(huì)將 RowBounds 中的 offset 參數(shù)當(dāng)成 pageNum 使用惠桃,可以用頁(yè)碼和頁(yè)面大小兩個(gè)參數(shù)進(jìn)行分頁(yè)浦夷。
3. rowBoundsWithCount :默認(rèn)值為 false 辖试,該參數(shù)對(duì)使用 RowBounds 作為分頁(yè)參數(shù)時(shí)有效。 當(dāng)該參數(shù)設(shè)置為 true 時(shí)劈狐,使用 RowBounds 分頁(yè)會(huì)進(jìn)行 count 查詢罐孝。
4. pageSizeZero :默認(rèn)值為 false ,當(dāng)該參數(shù)設(shè)置為 true 時(shí)肥缔,如果 pageSize=0 或者 RowBounds.limit =0 就會(huì)查詢出全部的結(jié)果(相當(dāng)于沒(méi)有執(zhí)行分頁(yè)查詢莲兢,但是返回結(jié)果仍然是 Page 類(lèi)型)。
5. reasonable :分頁(yè)合理化參數(shù)续膳,默認(rèn)值為 false 改艇。當(dāng)該參數(shù)設(shè)置為 true 時(shí), pageNum<=0 時(shí)會(huì)查詢第一頁(yè)坟岔, pageNum>pages (超過(guò)總數(shù)時(shí))谒兄,會(huì)查詢最后一頁(yè)。默認(rèn) false 時(shí)社付,直接根據(jù)參數(shù)進(jìn)行查詢承疲。
6. params :為了支持 startPage(Object params) 方法,增加了該參數(shù)來(lái)配置參數(shù)映射鸥咖,用于從對(duì)象中根據(jù)屬性名取值燕鸽, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable ,不配置映射的用默認(rèn)值扛或, 默認(rèn)值為pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero绵咱。
7. supportMethodsArguments :支持通過(guò) Mapper 接口參數(shù)來(lái)傳遞分頁(yè)參數(shù),默認(rèn)值 false 熙兔,分頁(yè)插件會(huì)從查詢方法的參數(shù)值中,自動(dòng)根據(jù)上面 params 配置的字段中取值艾恼,查找到合適的值時(shí)就會(huì)自動(dòng)分頁(yè)住涉。 使用方法可以參考測(cè)試代碼中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和ArgumentsObjTest 。
8. autoRuntimeDialect :默認(rèn)值為 false 钠绍。設(shè)置為 true 時(shí)舆声,允許在運(yùn)行時(shí)根據(jù)多數(shù)據(jù)源自動(dòng)識(shí)別對(duì)應(yīng)方言的分頁(yè) (不支持自動(dòng)選擇 sqlserver2012 ,只能使用 sqlserver )柳爽,用法和注意事項(xiàng)參考下面的場(chǎng)景五媳握。
9. closeConn :默認(rèn)值為 true 。當(dāng)使用運(yùn)行時(shí)動(dòng)態(tài)數(shù)據(jù)源或沒(méi)有設(shè)置 helperDialect 屬性自動(dòng)獲取數(shù)據(jù)庫(kù)類(lèi)型時(shí)磷脯,會(huì)自動(dòng)獲取一個(gè)數(shù)據(jù)庫(kù)連接蛾找, 通過(guò)該屬性來(lái)設(shè)置是否關(guān)閉獲取的這個(gè)連接,默認(rèn) true 關(guān)閉赵誓,設(shè)置為false 后打毛,不會(huì)關(guān)閉獲取的連接柿赊,這個(gè)參數(shù)的設(shè)置要根據(jù)自己選擇的數(shù)據(jù)源來(lái)決定。