spring boot 中分頁外掛PageHelper的使用
阿新 • • 發佈:2018-12-23
PageHelper做的是什麼呢?它封裝了分頁的後臺部分,將你的語句改裝成了一個分頁查詢的sql。它的優缺點:
優點:封裝分頁sql,使我們不需要每個地方都去寫分頁的查詢語句;同時,使我們select的sql語句向下相容,換了資料庫也不需要更改sql程式碼;
缺點:自帶的Page物件轉json時會丟失分頁資料;而轉為PageInfo物件時分頁資訊過多(這一點作者已在github上說明,建議自己實現PageInfo)
至於使用方面,在spring boot中是比較簡單的,如下:
一.pom檔案裡新增依賴
新增如下依賴即可:
<!-- 分頁外掛 -->
<dependency >
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
二.專案配置檔案application.properties里加配置項
#pagehelper分頁外掛
#指定用的什麼資料庫
pagehelper.helperDialect=mysql
#分頁合理化引數,預設值為false。當該引數設定為 true 時,
#pageNum<=0 時會查詢第一頁
pagehelper.reasonable=true
#支援通過 Mapper 介面引數來傳遞分頁引數,預設值false
pagehelper.supportMethodsArguments=true
pagehelper.params.count=countSql
三.專案程式碼裡開始使用
//currentPage當前頁數,pageSize為每頁資料條數
PageHelper.startPage(currentPage, pageSize);
//SensitiveWord為資料實體,sensitiveWord為sql裡自己傳入的查詢變數
//selectPageByWord()就是自己正常的dao層方法
Page<SensitiveWord> pageSensitiveWords = sensitiveWordMapper.selectPageByWord(currentPage,pageSize,sensitiveWord);
//將查詢結果封裝成PageInfo返回給前端,裡面包含當前頁等很多分頁相關資訊
PageInfo<SensitiveWord> pageInfo = new PageInfo<SensitiveWord>(pageSensitiveWords);
值得一提一個問題是:分頁查詢臨近頁部分資料重複問題
這是因為排序未做到唯一排序導致的,可通過對主鍵唯一排序解決,例如先對時間排序,後面再對主鍵排序,這樣就可以做到唯一排序了。
也就是在查詢語句後面加上類似這樣的排序寫法:
ORDER BY update_time DESC,ID DESC
至此,就是使用的完整過程了。然後貼一下參考之處,想深入瞭解,可多看大佬的文件,裡面很詳盡: