Mybatis Plus啟動注入 SQL 原理分析


 

 

 

1) 問題: xxxMapper 繼承了 BaseMapper<T>, BaseMapper 中提供了通用的 CRUD 方法,     

 方法來源於 BaseMapper, 有方法就必須有 SQL, 因為 MyBatis 最終還是需要通過      SQL 語句操作數據.   

前置知識:MyBatis 源碼中比較重要的一些對象, MyBatis 框架的執行流程   Configuration     MappedStatement   ……..

2) 通過現象看到本質

A. employeeMapper 的本質  org.apache.ibatis.binding.MapperProxy

B. MapperProxy 中 sqlSession –>SqlSessionFactory 

 

C. SqlSessionFacotry 中 → Configuration→ MappedStatements 每一個 mappedStatement 都表示 Mapper 接口中的一個方法與 Mapper 映射文件 中的一個 SQL。

MP 在啟動就會挨個分析 xxxMapper 中的方法,並且將對應的 SQL 語句處理好,保 存到 configuration 對象中的 mappedStatements 中.

D. 本質: 

 

Configuration: MyBatis 或者 MP 全局配置對象

MappedStatement:一個 MappedStatement 對象對應 Mapper 配置文件中的一個 select/update/insert/delete 節點,主要描述的是一條 SQL 語句

SqlMethod : 枚舉對象 ,MP 支持的 SQL 方法

TableInfo:數據庫表反射信息 ,可以獲取到數據庫表相關的信息

SqlSource: SQL 語句處理對象

MapperBuilderAssistant: 用於緩存、SQL 參數、查詢方劑結果集處理等. 通過 MapperBuilderAssistant 將每一個 mappedStatement 添加到 configuration 中的 mappedstatements 中

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM