MP版本爲2.3sql
注入主要靠com.baomidou.mybatisplus.mapper.AutoSqlInjector 來完成數據庫
①,mybatis先進行sql語句的映射,而後mybatis-plus再添加mybatis
②,咱們在AutoSqlInjector .injectDeleteByIdSql 打一個斷點app
咱們再看一下SqlMethod.DELETE_BY_ID 這個模板,原來也沒啥神祕的,定義了一個sql模板,寫了通用的sql語句,由此咱們也知道,mp不能用於nosql,並且mybatis自己就不支持nosql,mp只是mybatis的加強工具,mybatis都作不到的事,mp能作到纔有鬼呢,因此這些mp不支持nosql也是合理的nosql
(工具
那mp支持的關係型數據庫有哪些呢?咱們能夠經過看com.baomidou.mybatisplus.generator.config.rules.DbType得知:ui
)this
③,若是是批量刪除仍是個假的批量,利用的是foreach循環,利用的mybatis的ExecutorType應該仍是SIMPLEorm
④,利用 String.format 初步解析sql對象
⑤,利用mybatis的languageDriver 獲得sqlSource 對象
⑥,調用addDeleteMappedStatement方法,添加Statement
時機是調用本對象的this.addMappedStatement方法,sql命令類型爲delete
⑦,咱們在AutoSqlInjector .addMappedStatement 打一個斷點
這裏咱們能夠看出,mp在添加sql時會先判斷咱們有無手動進行添加同名的sql,有則跳過
⑧,進入builderAssistant.addMappedStatement 方法
能夠看出,先裏利用傳入的參數封裝成一個MappedStatement 對象;再添加到Configuration的mappedStatements 中