天天看點

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

問題描述:

用mybatis進行mysql查詢list時,沒有使用PageHepler.startPage方法,列印出的sql自動查詢了count,并且進行了limit,其中入參中包含pageNum和pageSize參數,切都不為null

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

 攜帶了limit

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

原因:supourt-methods-arguments設定為true了,并且入參包含pageNum、pageSzie兩個參數且都不為空

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

解決方法(從源碼分析中得到的方法):

  1. 将pageNum或pagSize參數中的一個命名為其他值
  2. 将pageNum或pageSize參數中的一個設定為null
  3. 将supourt-methods-arguments設定為false(預設為false)

源碼排查原因:

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

 1、通過pageHelper的自動配置,查出pageHelper的啟動檔案

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

2、通過啟動檔案找到pageHelper對應的攔截器

3、通過斷點調試,檢視pageHelper的處理邏輯

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

 PageObjectUtil

Mybatis莫名自動分頁?PageHelper自動分頁(踩坑)

 通過上面的兩端源碼我們看出如果設定了supportMethodsArguments值為true,他會去擷取參數中是否有pageNum和pageSize,如果兩者都不為空,會傳回一個new Page (這和PageHelper.startPage最後調用異曲同工)

小收獲

願你眼中有光芒,活成你想要的模樣

繼續閱讀