精心挑選要閱讀的源碼項目; 飲水思源——官方文檔,先看文檔再看源碼; 下載源碼,安裝到本地,保證能編譯運行; 從巨集觀到微觀,從整體到細節; 找到入口,抓主放次,梳理核心流程; 源碼調試,找到核心數據結構和關鍵類; 勤練習,多折騰; MyBatis 源碼下載地址:https://github.com/ ...
精心挑選要閱讀的源碼項目;
飲水思源——官方文檔,先看文檔再看源碼;
下載源碼,安裝到本地,保證能編譯運行;
從巨集觀到微觀,從整體到細節;
找到入口,抓主放次,梳理核心流程;
源碼調試,找到核心數據結構和關鍵類;
勤練習,多折騰;
MyBatis 源碼下載地址:https://github.com/mybatis/mybatis-3
整體架構
mabatis源碼思維導圖
mybatis三大核心流程:
mybatis初始化:
進入游標選中的propertiesElement方法內發現,mybatis初始化的時候會把配置文件內的信息放入configuration對象對應的屬性內:
至此mybatis初始化工作完成,配置文件的所有信息都被載入到了sqlSessionFactory中的configration對象內。
mybatis代理階段:
根據sql的類型update,insert,select,delete 縮小查找範圍,然後根據sql的返回類型map?list?就可唯一確定一個sqlsession執行方法
mybatis mapper介面並沒有實現類,運行中如何判調用的具體方法,執行指定的sql語句???
]SqlSession查詢介面嵌套關係
資料庫讀寫階段:
遵循jdbc的規範,先上一段jdbc代碼拋磚引玉:
Executor的三個重要組件
StatementHandler:它的作用是使用資料庫的Statement或PrepareStatement執行操作,啟承上啟下作用;
ParameterHandler:對預編譯的SQL語句進行參數設置
ResultSetHandler:對資料庫返回的結果集(ResultSet)進行封裝,返回用戶指定的實體類型;
接著上一段源碼,進入selelectList()方法。
ParameterHandler 組件已經饑渴難耐了。
Excutor黑幕如下
最後再看Mybatsi官方文檔的介紹,是否有豁然開朗的感覺呢?
什麼是 MyBatis ?
MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。
MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成資料庫中的記錄。