1. 程式人生 > >spring boot 中分頁外掛PageHelper的使用

spring boot 中分頁外掛PageHelper的使用

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

至此,就是使用的完整過程了。然後貼一下參考之處,想深入瞭解,可多看大佬的文件,裡面很詳盡: