1. 程式人生 > >精盡MyBatis原始碼分析 - MyBatis初始化(四)之 SQL 初始化(下)

精盡MyBatis原始碼分析 - MyBatis初始化(四)之 SQL 初始化(下)

> 該系列文件是本人在學習 Mybatis 的原始碼過程中總結下來的,可能對讀者不太友好,請結合我的原始碼註釋([Mybatis原始碼分析 GitHub 地址](https://github.com/liu844869663/mybatis-3)、[Mybatis-Spring 原始碼分析 GitHub 地址](https://github.com/liu844869663/spring)、[Spring-Boot-Starter 原始碼分析 GitHub 地址](https://github.com/liu844869663/spring-boot-starter))進行閱讀 > > MyBatis 版本:3.5.2 > > MyBatis-Spring 版本:2.0.3 > > MyBatis-Spring-Boot-Starter 版本:2.1.4 ## MyBatis的初始化 在MyBatis初始化過程中,大致會有以下幾個步驟: 1. 建立`Configuration`全域性配置物件,會往`TypeAliasRegistry`別名註冊中心新增Mybatis需要用到的相關類,並設定預設的語言驅動類為`XMLLanguageDriver` 2. 載入`mybatis-config.xml`配置檔案、Mapper介面中的註解資訊和XML對映檔案,解析後的配置資訊會形成相應的物件並儲存到Configuration全域性配置物件中 3. 構建`DefaultSqlSessionFactory`物件,通過它可以建立`DefaultSqlSession`物件,MyBatis中`SqlSession`的預設實現類 因為整個初始化過程涉及到的程式碼比較多,所以拆分成了四個模組依次對MyBatis的初始化進行分析: - [**《MyBatis初始化(一)之載入mybatis-config.xml》**](https://www.cnblogs.com/lifullmoon/p/14015009.html) - [**《MyBatis初始化(二)之載入Mapper介面與XML對映檔案》**](https://www.cnblogs.com/lifullmoon/p/14015046.html) - [**《MyBatis初始化(三)之SQL初始化(上)》**](https://www.cnblogs.com/lifullmoon/p/14015066.html) - [**《MyBatis初始化(四)之SQL初始化(下)》**](https://www.cnblogs.com/lifullmoon/p/14015075.html) 由於在MyBatis的初始化過程中去解析Mapper介面與XML對映檔案涉及到的篇幅比較多,XML對映檔案的解析過程也比較複雜,所以才分成了後面三個模組,逐步分析,這樣便於理解 ## 初始化(四)之SQL初始化(下) 在上一篇文件中詳細地講述了MyBatis在解析` `節點解析成`MappedStatement`物件,其中會將節點中定義的SQL語句通過`XMLLanguageDriver`語言驅動類建立一個`SqlSource`物件,本文就是對該物件進行分析 通過`SqlSource`這個物件根據入參可以獲取到對應的`BoundSql`物件,`BoundSql`物件中包含了資料庫需要執行的SQL語句、`ParameterMapping`引數資訊、入參物件和附加的引數(通過``標籤生成的,或者``標籤中的集合的元素等等) 好了,對於MyBatis的整個初始化過程我們已經全部分析完了,其中肯定有不對或者迷惑的地方,歡迎指正!!!感謝大家的閱讀!!!:smile::smile::smile: > 參考文章:**芋道原始碼**[《精盡 MyBatis 原始碼分析》](http://svip.iocoder.cn/categories/M