1. 程式人生 > >Mybatis原始碼正確開啟方式

Mybatis原始碼正確開啟方式

精心挑選要閱讀的原始碼專案;

飲水思源——官方文件,先看文件再看原始碼;

下載原始碼,安裝到本地,保證能編譯執行;

從巨集觀到微觀,從整體到細節;

找到入口,抓主放次,梳理核心流程;

原始碼除錯,找到核心資料結構和關鍵類;

勤練習,多折騰;

 

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物件)對映成資料庫中的記錄。