一、mybatis主要成員
1、Configuration:
a、 MyBatis所有的配置信息都保存在Configuration對象之中,配置文件中的大部分配置都會存儲到該類中
b、可以理解為所有mybatis文件的集合
2、SqlSession:
a、作為MyBatis工作的主要頂層API,表示和數據庫交互時的會話,完成必要數據庫增刪改查功能
b、從中獲取會話的連接
3、Executor:
a、MyBatis執行器,是MyBatis 調度的核心,負責SQL語句的生成和查詢緩存的維護
b、sql的執行器
4、StatementHandler:
4、StatementHandler:
a、封裝了JDBC Statement操作,負責對JDBC statement 的操作,如設置參數等
5、ParameterHandler:
5、ParameterHandler:
a、負責對用戶傳遞的參數轉換成JDBC Statement 所對應的數據類型
b、主要負責類型的轉換
c、這個用戶可以自己定制
6、ResultSetHandler:
6、ResultSetHandler:
a、負責將JDBC返回的ResultSet結果集對象轉換成List類型的集合
7、TypeHandler
7、TypeHandler
a、負責java數據類型和jdbc數據類型(也可以說是數據表列類型)之間的映射和轉換
8、 MappedStatement
8、 MappedStatement
a、MappedStatement維護一條<select|update|delete|insert>節點的封裝
b、mapper文件中的一個id對應一個該對象
9、 SqlSource
9、 SqlSource
a、負責根據用戶傳遞的parameterObject,動態地生成SQL語句,將信息封裝到BoundSql對象中,並返回
10、BoundSql
10、BoundSql
a、表示動態生成的SQL語句以及相應的參數信息
11、關系
a、根據配置文件(全局的和sql映射文件)初始化Configuration對象
b、Configuration初始化一個DefautSqlSessionFactory作為會話工廠
c、Configuration創建sqlSession(內部包含configuration)
d、Configuration中聲明數據庫的具體執行類,MapperProxy中通過反射調用執行類的具體方法。
e、Executor的具體方法在執行前會構造MappedStatement做入參,然后從MappedStatement中抽離出BoundSql
f、SqlSource根據入參構造BoundSql
g、查詢前StatementHandler將mappedstatement中的內容填充到BoundSql中。
h、緊接着g,StatementHandler的parameterize方法會調用ParameterHandler並在其setParameters中使用TypeHandler對BoundSql中的占位符進行替換。
i、ResultSetHandler和ParameterHandler一起聲明,會對Statement返回結果進行處理
12、其他
a、Configuration中在構造parameterHandler,executor,ResultSetHandler等地方都有攔截器處理邏輯

二、關鍵流程
1、構造一個會話工廠

a、最后穿創建的應該是DefaultSqlSessionFactory,不是DefaultSqlSession
b、入口一般是spring等啟動時調用,如spring中的MybatisAutoConfiguration類
2、openSesion獲取SqlSession對象
b、SqlSession的實現類DefaultSqlSession便是具體的數據庫操作類(可以增刪改查),它的內部依賴configuration
c、數據源構造了事務,事務成全了數據庫操作執行器executor
d、事務隔離級別裝載
d、事務隔離級別裝載
e、executor構造時的type的來源
3、getMapper獲取到接口的代理對象
a、MapperFactoryBean的getObject()方法會調用上述流程
b、session中的configuration中獲取mapper
三、請求執行
1、流程圖
a、mapperproxy通過jdk的代理反射構成,其中會調用executor的實現類
四、總流程圖
1、流程圖
mybatis加載配置文件及應用原理解析
參見:
1、https://www.cnblogs.com/luoxn28/p/6417892.html
2、https://blog.csdn.net/qq_30604989/article/details/80425288