使用PageHelper時發現超過最大數量的頁數,仍然可以返回資料
阿新 • • 發佈:2018-12-17
最近在做專案的時候,使用PageHelper來進行分頁查詢,發現一個現象:明明查詢出來的總數只有7個,分頁的時候每頁10個,按理說只有第一頁返回會有資料,第二頁開始就沒有資料了,但是實際情況卻是第二頁返回的資料與第一頁一致,甚至第三頁,第四頁。。。也是與第一頁一樣的資料返回結果
通過分析PageHelper的原始碼,發現PageHelper裡面有一個reasonable引數,如果是true,會分頁合理化,針對不合理的頁碼自動處理。這個引數可以通過我們手動在mybatis的config檔案中自己配置。
在攔截器PageInterceptor中,呼叫AbstractHelperDialect.afterCount方法判斷是否繼續進行分頁
在AbstractHelperDialect.afterCount方法中會呼叫Page.setTotal
在Page.setTotal方法中會對分頁進行合理化判斷,不合理的頁碼會自動處理,把最大頁數賦值給當前頁數,
並且通過calculateStartAndEndRow方法重新計算起止號
所以,如果在mybatis的config檔案中把reasonable設定為false,分頁外掛就不會給我們自動進行分頁合理化了。