天天看點

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

MyBatis詳細執行流程

步驟總結:

1、Resources加載全局配置檔案

2、執行個體化SqlSessionFactoryBuilder工程建構器

3、由XMLConfigBulider解析配置檔案流

4、把配置資訊存放在Configuration中

5、執行個體化SqlSessionFactory實作類DefaultSqlSessionFactory

6、由TransactionFactory建立一個Transaction事務對象

7、建立Excutor執行器

8、建立SqlSession接口實作類DefaultSqlSession

9、實作CURD若執行成功,則事務送出(注:查詢操作不用送出事務),否則因失敗而復原到第6步

10、關閉

1、Resources加載全局配置檔案

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

2、執行個體化SqlSessionFactoryBuilder工程建構器

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

3、由XMLConfigBulider解析配置檔案流

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

4、把配置資訊存放在Configuration中

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

通過 Debug 也可以看出 Configuration 中包含了許多的配置資訊

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

5、執行個體化SqlSessionFactory實作類DefaultSqlSessionFactory

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

6、由TransactionFactory建立一個Transaction事務對象

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理
MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

7、建立Excutor執行器

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

8、建立SqlSession接口實作類DefaultSqlSession

根據 Debug 測試可尋根溯源

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理
MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理
MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理
MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

成功找到SqlSession接口的實作類DefaultSqlSession的執行個體化代碼段

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

9、實作CURD若執行成功,則事務送出(注:查詢操作不用送出事務),否則因失敗而復原到第6步

當然,也可以在擷取SqlSession時配置事務自動送出,則增删改操作也不再需要送出事務

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

這是由于此方法是個重載方法

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理

10、關閉

未使用自動送出事務的重載方法

MyBatis知識彙總(第七篇)【圖文】關于執行流程的源碼分析+底層原理