mybatis執行開始時,使用resources類將磁碟上面的核心配置檔案載入到記憶體中,得到乙個輸入流。
inputstream is = resources.
getresourceasstream
("mybatis.xml"
);
然後,通過輸入流作為引數傳遞給xmlconfigbuilder,建立乙個xmlconfigbuilder物件。xmlconfigbuilder物件呼叫parse方法,得到configuration物件。它儲存了磁碟中核心配置檔案的資訊。然後configuration物件作為引數傳遞給defaultsqlsessionfactory,得到defaultsqlsessionfactory物件。defaultsqlsessionfactory物件就是下面的factory。
// 自己寫的
factory =
newsqlsessionfactorybuilder()
.build
(is)
;
// mybatis內部執行的
public sqlsessionfactory build
(inputstream inputstream, string environment, properties properties)
catch
(exception e)
finally
catch
(ioexception e)}}
public configuration parse()
this
.parsed =
true
;parseconfiguration
(this
.parser.
evalnode
("/configuration"))
;return
this
.configuration;
}public sqlsessionfactory build
(configuration config)
public
defaultsqlsessionfactory
(configuration configuration)
然後,執行factory
.opensession().呼叫defaultsqlsessionfactory物件的opensessionfromdatasource方法,建立environment ,transactionfactory ,executor物件,儲存configuration物件中的資料。 獲得乙個defaultsqlsession物件,就是session。
//自己寫的
sqlsession session = factory.
opensession
(/*事務自動提交引數true*/
);
//mybatis內部執行的方法
private sqlsession opensessionfromdatasource
(executortype exectype, transactionisolationlevel level,
boolean autocommit)
catch
(exception e)
finally
errorcontext.
instance()
.reset()
;return defaultsqlsession;
throw exception;
}
現在已經拿到了session.呼叫sql**,事務沒問題,提交,有問題,不提交即回滾。操作完畢,關閉session資源。
以上就是對mybatis框架執行原理的文字描述。
MyBatis的執行原理
答案就是動態 關於動態 的內容,博主在之前的博文中已經詳細介紹過了,此處不再贅述。本文主要探析一下mybatis在執行資料庫操作時的執行原理。package com maowei learning orm dao import com maowei learning orm user public ...
MyBatis的執行原理
為什麼要使用mybatis?jdbc的弊端 什麼是框架?框架是乙個半成品,已經對基礎的 進行了封裝並提供相應的api,開發者在使用框架是直接呼叫封裝好的api可以省去很多 編寫,從而提高工作效率和開發速度。框架定義 框架是一種經過校驗 具有一定功能的半成品軟體。經過校驗 指框架本身經過測試 並且框架...
mybatis執行原理
1 獲取sqlsessionfactory物件 解析檔案的每乙個資訊儲存在configuration中,返回包含configuration的defaultsqlsessionfactory 2 獲取sqlsession物件 返回乙個defaultsqlsession物件,包含executor和con...