MyBatis 攔截器(3)

分頁攔截器的實現思路:

a)我們希望在原始查詢語句執行前,對語句進行變更,加上limit 0,10類似的語句。Mybatis在執行Sql之前會產生Statement對象,所以我們可以在它生成Statement對象前對Sql語句改造。

b)在Mybatis中Statement語句是通過RoutingStatementHandler對象的prepare方法生成的。分頁攔截器的思路就是攔截StatementHandler接口的prepare方法,在攔截器方法中把Sql語句改造成分頁查詢Sql語句,然后再調用StatementHandler對象的prepare方法,也就是調用invocation.proceed()。

c)做分頁當然需要先統計出記錄的總數,然后計算出總共有多少頁。所以,在攔截器里面還需要統計滿足當前查詢條件的記錄一共有多少。這就需要在獲取到原始的Sql語句后,修改為對應的統計語句比如:select count(*) from

tablename,之后再執行該記錄統計的Sql語句進行總記錄數的查詢。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容