MyBatis攔截參數 自動帶上limit

  現在公司項目裏都是使用mybatis,突然有一天,看到一個奇怪的現象,在controller、service和dao都沒有設置查詢的 limit x,y ,但是,放開sql打印,確確實實打印了limit語句,並且實際效果也是limit的。

  嚇得我關了IDE,清了緩存,再試,居然還是一樣的。

  奇了怪了,這個爲什麼會自動加上limit查詢呢?難道是mybatis新出的黑科技?但是,我看mybatis的版本,也才mybatis-spring-boot-starter 1.3.2,還是2018年3月份的,如果那個時候就出了,肯定網上資料一大堆啊,可我搜了關鍵字,也沒看到黑科技的信息。

  沒辦法,只能本地下斷點,一點點F6,終於,發現了目標 PagePlugin 對象,PagePlugin實現了 mybatis的interceptor,點進去一看,原來,在執行select語句之前,會通過ParameterHandler進行參數攔截,自動給你加上limit 和算好的起始位置、size,還順帶把 count值計算了。

  看來自己的知識面,還是不夠廣泛啊。。

 

ps:代碼就不貼了,網上一搜一大把

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章