MyBatis原始碼分析

2021-10-24 04:55:51 字數 710 閱讀 9484

將mybatis-config.xml加載入inputstream中。

呼叫sqlsessionfactotybuilder().build()方法,將流傳入其中。

sqlsessionfactotybuilder().build()方法中有乙個xmlconfigbuilder類解析xml中的內容,封裝為乙個configuration例項,configuration物件的結構和xml配置檔案的物件幾乎相同。

到此對xml配置檔案的解析就結束了,回到build()方法返回乙個sqlsessionfactory物件,並將configuration物件傳入其中。

再進入sqlsessionfactory.opensession()方法,在內部為configuration建立指定型別的executor,返回乙個defaultsqlsession(configuration, executor,//事務隔離級別autocommit);

根據key值從快取中查詢,若快取中沒有就從資料庫中查詢,查詢出來後把結果放入快取,若快取中有則直接從快取中獲取。

從資料庫查詢的過程:根據傳入引數建立jdbc的statement連線物件,再將所有必要引數傳給statementhandler來完成對資料庫的查詢,最終返回結果集。

這裡的statementhandler主要完成兩個工作,一是對jdbc的statement物件裡的佔位符進行設值,二是執行資料庫操作,並將statement物件返回的結果集封裝為具體的物件。

Mybatis 原始碼分析

mybatis解析 2 sqlsessionfactorybean 繼承了 initializingbean 介面,在bean解析的finishbeanfactoryinitialization 的方法對 initializingbean介面中的 afterpropertiesset 方法進行呼叫,...

Mybatis原始碼分析

我們都知道mybatis它是一款優秀的持久層框架,它支援定製化sql 儲存過程以及高階對映,幫我們節省了許多時間與精力,今天我們主要來對mybatis的底層原始碼進行分析,主要是以下4行 首先呼叫resources中的單個string引數的getresuorceasstream string res...

MyBatis 原始碼分析

sqlsession inte ce,代表乙個連線資料庫的會話,提供了乙個預設的 defaultsqlsession sqlsessionfactory inte ct,建立 sqlsessionfactory 的工廠,提供了預設的 defaultsqlsessionfactory建立 defaul...