1.pom.xml引入插件
<!-- 分頁插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2.設置分頁插件
//.yml文件
# pagehelper分頁配置
pagehelper:
helper-dialect: mysql
params: count=countSql
reasonable: false
page-size-zero: false
support-methods-arguments: true
//.xml文件
#分頁插件
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
分頁插件參數(shù)介紹
1. helperDialect :分頁插件會自動檢測當前的數(shù)據(jù)庫鏈接,自動選擇合適的分頁方式。 你可以配置helperDialect 屬性來指定分頁插件使用哪種方言。配置時,可以使用下面的縮寫值:oracle , mysql , mariadb , sqlite , hsqldb , postgresql , db2 , sqlserver , informix , h2 , sqlserver2012 , derby特別注意:使用 SqlServer2012 數(shù)據(jù)庫時,需要手動指定為 sqlserver2012 ,否則會使用 SqlServer2005 的方式進行分頁。你也可以實現(xiàn) AbstractHelperDialect ,然后配置該屬性為實現(xiàn)類的全限定名稱即可使用自定義的實現(xiàn)方法。
2. offsetAsPageNum :默認值為 false ,該參數(shù)對使用 RowBounds 作為分頁參數(shù)時有效。 當該參數(shù)設置為true 時,會將 RowBounds 中的 offset 參數(shù)當成 pageNum 使用,可以用頁碼和頁面大小兩個參數(shù)進行分頁。
3. rowBoundsWithCount :默認值為 false ,該參數(shù)對使用 RowBounds 作為分頁參數(shù)時有效。 當該參數(shù)設置為 true 時,使用 RowBounds 分頁會進行 count 查詢。
4. pageSizeZero :默認值為 false ,當該參數(shù)設置為 true 時,如果 pageSize=0 或者 RowBounds.limit =0 就會查詢出全部的結果(相當于沒有執(zhí)行分頁查詢,但是返回結果仍然是 Page 類型)。
5. reasonable :分頁合理化參數(shù),默認值為 false 。當該參數(shù)設置為 true 時, pageNum<=0 時會查詢第一頁, pageNum>pages (超過總數(shù)時),會查詢最后一頁。默認 false 時,直接根據(jù)參數(shù)進行查詢。
6. params :為了支持 startPage(Object params) 方法,增加了該參數(shù)來配置參數(shù)映射,用于從對象中根據(jù)屬性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable ,不配置映射的用默認值, 默認值為pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。
7. supportMethodsArguments :支持通過 Mapper 接口參數(shù)來傳遞分頁參數(shù),默認值 false ,分頁插件會從查詢方法的參數(shù)值中,自動根據(jù)上面 params 配置的字段中取值,查找到合適的值時就會自動分頁。 使用方法可以參考測試代碼中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和ArgumentsObjTest 。
8. autoRuntimeDialect :默認值為 false 。設置為 true 時,允許在運行時根據(jù)多數(shù)據(jù)源自動識別對應方言的分頁 (不支持自動選擇 sqlserver2012 ,只能使用 sqlserver ),用法和注意事項參考下面的場景五。
9. closeConn :默認值為 true 。當使用運行時動態(tài)數(shù)據(jù)源或沒有設置 helperDialect 屬性自動獲取數(shù)據(jù)庫類型時,會自動獲取一個數(shù)據(jù)庫連接, 通過該屬性來設置是否關閉獲取的這個連接,默認 true 關閉,設置為false 后,不會關閉獲取的連接,這個參數(shù)的設置要根據(jù)自己選擇的數(shù)據(jù)源來決定
3.項目部分代碼
//啟動分頁后所遇第一個mybatis語句 會分頁 后面的分頁則無效
PageHelper.startPage(listQuery.getPage(), listQuery.getLimit());
MtcChecklist ety = new MtcChecklist();
ety.setUserid(userid);
ety.setLiftnumber(liftnumber);
//此處會分頁 如果后面還有查詢則不會分頁
List<MtcChecklist> mtcllist = mtcChecklistMapper.getMtcChecklistByCondition(ety);
// 獲取分頁查詢后的數(shù)據(jù) 也可以直接返回PageInfo對象 里面數(shù)據(jù)都有
PageInfo<MtcChecklist> pageInfo = new PageInfo<>(mtcllist);
pdr.setTotal(Long.valueOf(pageInfo.getTotal()).intValue());
pdr.setRows(mtcllist);
return setResultSuccess(pdr);
其中:PageHelper.startPage(int PageNum,int PageSize):用來設置頁面的位置和展示的數(shù)據(jù)條目數(shù),我們設置每頁展示5條數(shù)據(jù)。PageInfo用來封裝頁面信息,返回給前臺界面。PageInfo中的一些我們需要用到的參數(shù)如下表:
PageInfo.list 結果集
PageInfo.pageNum 當前頁碼
PageInfo.pageSize 當前頁面顯示的數(shù)據(jù)條目
PageInfo.pages 總頁數(shù)
PageInfo.total 數(shù)據(jù)的總條目數(shù)
PageInfo.prePage 上一頁
PageInfo.nextPage 下一頁
PageInfo.isFirstPage 是否為第一頁
PageInfo.isLastPage 是否為最后一頁
PageInfo.hasPreviousPage 是否有上一頁
PageHelper.hasNextPage 是否有下一頁