我們都知道mybatis它是一款優秀的持久層框架,它支援定製化sql、儲存過程以及高階對映,幫我們節省了許多時間與精力,今天我們主要來對mybatis的底層原始碼進行分析,主要是以下4行**。
首先呼叫resources中的單個string引數的getresuorceasstream(string resource)方法,傳入mybatis-config.xml檔案。
然後該方法裡面又呼叫了本類中的兩個引數的getresuorceasstream(classloader loader,string resource)方法。
方法,然後這個方法裡面再呼叫了本類中的getresourceasstream(string resource, classloader[ ] classloader)
最後通過對classloader[ ]
陣列進行,然後進行判斷,看類載入器中所讀的流是否為
null,如果不為null,最後
則返回inputstream
物件。
建立完sqlsessionfactorybuilder物件之後,呼叫build(inputstream inputstream)方法。
再呼叫本類帶三個引數的過載的build(inputstream inputstream, string environment, properties properties)方法。
然後建立解析器parser,通過xpath解析的方式去解析mybatis-config.xml 檔案。
把配置檔案的資訊解析並儲存在
configuration物件中,這個configuration物件相當於 mybatis-config.xml 中的配置檔案所對應的類。
最後返回包含
configuration
的defaultsqlsession
物件。
通過之前返回的defaultsqlsessionfactory物件,呼叫它的opensession()方法。
再呼叫本類中的opensessionfromdatasource(executortype exectype, transactionisolationlevel level, boolean autocommit)方法。
建立事務tx,獲取environment資訊,通過environment構建出transactionfactory事務工廠,再通過事務工廠對事物進行設定。
newexecutor(),根據executor在全域性配置中的型別,建立出對應的執行器。如果有二級快取配置開啟,建立cachingexecutor(executor)。
通過executor、事務自動提交以及配置檔案物件(configuration)返回 defaultsqlsession物件。
先通過sqlsessionfactorybuilder去讀取mybatis的配置檔案,然後build乙個defaultsqlsessionfactory。當我們獲取到sqlsessionfactory之後,就可以通過sqlsessionfactory去獲取sqlsession物件。
獲取到sqlsession物件之後,就可以呼叫sqlsession中一系列的select..., insert..., update..., delete...方法來進行crud操作。
以上就是個人對mybatis的原始碼的分析理解。
Mybatis 原始碼分析
mybatis解析 2 sqlsessionfactorybean 繼承了 initializingbean 介面,在bean解析的finishbeanfactoryinitialization 的方法對 initializingbean介面中的 afterpropertiesset 方法進行呼叫,...
MyBatis 原始碼分析
sqlsession inte ce,代表乙個連線資料庫的會話,提供了乙個預設的 defaultsqlsession sqlsessionfactory inte ct,建立 sqlsessionfactory 的工廠,提供了預設的 defaultsqlsessionfactory建立 defaul...
MyBatis原始碼分析
將mybatis config.xml加載入inputstream中。呼叫sqlsessionfactotybuilder build 方法,將流傳入其中。sqlsessionfactotybuilder build 方法中有乙個xmlconfigbuilder類解析xml中的內容,封裝為乙個con...