現象:
偶然遇到了這個問題,同一個查詢結果一會是2個(預期),一會是1個(刷新/重啟應用就又變成2個)
定位:
查看日志,發現了問題:結果為1個時查詢SQL自動加上了Limit 1
原理及解決:
1. 設置了PageHelper.startPage(pageStart, pageSize) 2. 假設接下來沒有執行后續的查詢(拋出或者其它原因) 3. 此時PageHelper的分頁設置綁定在該線程的ThreadLocal里 4. 新的SQL查詢恰好使用了該線程,則自動使用分頁查詢(limit就莫名其妙的出現了) 5. 在高風險的地方釋放分頁設置PageHelper.clearPage();
