前言
我採用的原始碼位址 ibatis原始碼 在ibatis-2目錄裡,原始碼release jar包測試**在ibatis_release_jar_test目錄裡。
之所以使用ibatis原始碼作為閱讀物件,要明確的一點就是閱讀原始碼不是為了找工作,而是為了工作為了讓水平提高。mybatis原始碼現在已經優化的越來越好,越來越強大。在這些強大的背後,邏輯業務非常複雜。想要閱讀其精髓,那麼就要從簡單的開始。ibatis**量小,閱讀容易。
在測試使用ibatis時候,第一步會有載入sqlmapconfig.xml檔案。
//讀取xml檔案
reader reader = resources.
getresourceasreader
("sqlmapconfig.xml"
);
繼續抽絲剝繭。呼叫resources類中的getresourceasreader方法,返回io中的reader物件;
並且可以看出resources類中的方法全是static修飾的方法,直接呼叫即可。resources類是ibatis io的基礎類,而且實現方式簡單。其他類中的方法讀取乙個檔案,最終都要通過resources獲取所想要的資料結構。
/**@param resource 是sqlmapconfig.xml檔案的路徑*/
public
static reader getresourceasreader
(string resource)
throws ioexception
else
return reader;
}
根據檔案路徑讀取檔案返回inputstream的方法是getresourceasstream,其方法裡的核心內容是jdk中的classloader載入檔案,然後返回inputstream。
public
static inputstream getresourceasstream
(classloader loader,
string resource)
throws ioexception
知道了根據檔案路徑讀取檔案返回inputstream的方法。那麼可以進一步進行推廣,讀取properties那正是手到擒來。思路是根據properties檔案的inputstream然後,載入到properties物件中。
//resource是properties檔案路徑
public
static properties getresourceasproperties
(string resource)
throws ioexception
上面的方法就是載入sqlmapconfig.xml配置檔案,將其變成reader物件。然後對其下一步操作。ibatis的io塊在這裡介紹完畢,通過resources類中的方法,進一步推廣,思路是將檔案變成reader或者inputstream。
如果想要更加直觀的感受在batchtest測試方法中執行跟蹤。
mybatis原始碼解析
最近閱讀了許久的mybatis原始碼,小有所悟。同時也發現網上有許多優秀的mybatis原始碼講解博文。本人打算把自己閱讀過的 覺得不錯的一些博文列出來。以此進一步加深對mybatis框架的理解。其實還有乙個目的是,本人也想寫一系列博文來分享自己對mybatis的理解。然而。個人文筆太差,列出的這些...
mybatis原始碼解析
類列表 sqlsessionfactory 說明 sqlsession物件的工場用於建立sqlsession。sqlsession 說明 執行sql的介面類。configuration 說明 資料庫連線和sql語句配置類。executor 說明資料操作方法介面類 步驟 載入xml檔案到xmlconf...
Mybatis原始碼解析
mybatis原始碼解析 一 mybatis 流程三個階段 1 初始化階段 讀取xml 配置檔案和註解中的配置資訊,建立配置物件,並完成各個模組的初始工作 3 資料處理階段 通過 sqlsession 完成sql解析,引數的對映 sql的執行 結果的反射解析過程 二 簡化版 mybatis 實現思路...