1、Bug復現
postman測試時,傳入當前頁pageNum,每頁顯示條數:pageSize,兩個參數之后,不管pageSize傳入任何之后,接口返回值中的pageSize都是固定不變的,與傳入值不一致。
2、問題分析
出現問題,先看配置
2.1 pom文件檢查
<!-- pageHelper分頁插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.12</version> </dependency>
看完之后,發現並沒有什么問題。
2.2 application.yml配置檢查
# pageHelper分頁配置
pagehelper:
helper-dialect: mysql
reasonable: false
support-methods-arguments: true
params: count=countSql
看了一下配置,網上有博主說,是reasonable參數配置的問題。
問題就在reasonable這個參數配置上,reasonable可以理解為是否開啟自動優化默認為false,
如果為true當查詢的頁碼無數據時就會返回離輸入的頁碼最近含數據的頁碼數據(最后一個有數據的頁碼數據或者第一頁的數據)。
如果設置為false當查詢的頁碼無數據時就直接返回空了。
但是,我看了一下當時設置的時候,就改為了 false,所以看來還不是這個問題。
看到這里,既然不是配置的問題,只能是代碼邏輯處理的問題了。
2.3 代碼邏輯檢查
下面先貼上錯誤代碼:
看到這里之后,才發現自己使用pageHelper的startpage方法之后,多用了一次查詢用戶部門信息,導致了分頁參數失效。
查看pageHelper官網文檔之后,證實了自己的想法,官方文檔截圖如下:
3、問題解決
那既然不能在pageHelper的startpage方法之后使用,那就在分頁之前先查一波,這樣就不會破壞它定義的使用規則了,后來事實證明,這種方法是可行的。
測試結果如下: