聯繫方式:18873247271(微信同步)html
廖先生java
qq:1727292697mysql
MyBatis的前身叫iBatis,本是apache的一個開源項目, 2010年這個項目由apache software foundation 遷移到了google code,而且更名爲MyBatis。MyBatis是支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎全部的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或註解用於配置和原始映射,將接口和Java的POJOs(Plan Old Java Objects,普通的Java對象)映射成數據庫中的記錄。sql
Mybatis的功能架構分爲三層(圖片借用了百度百科):數據庫
1) API接口層:提供給外部使用的接口API,開發人員經過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。apache
2) 數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操做。緩存
3) 基礎支撐層:負責最基礎的功能支撐,包括鏈接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來做爲最基礎的組件。爲上層的數據處理層提供最基礎的支撐。安全
Mybatis的總體流程圖微信
SqlSessionFactoryBuildersession
每個MyBatis的應用程序的入口是SqlSessionFactoryBuilder,它的做用是經過XML配置文件建立Configuration對象(固然也能夠在程序中自行建立),而後經過build方法建立SqlSessionFactory對象。沒有必要每次訪問Mybatis就建立一次SqlSessionFactoryBuilder,一般的作法是建立一個全局的對象就能夠了。示例程序以下:
SqlSessionFactory
SqlSessionFactory對象由SqlSessionFactoryBuilder建立。它的主要功能是建立SqlSession對象,和SqlSessionFactoryBuilder對象同樣,沒有必要每次訪問Mybatis就建立一次SqlSessionFactory,一般的作法是建立一個全局的對象就能夠了。SqlSessionFactory對象一個必要的屬性是Configuration對象,它是保存Mybatis全局配置的一個配置對象,一般由SqlSessionFactoryBuilder從XML配置文件建立。這裏給出一個簡單的示例:
要注意XML頭部的聲明,須要用來驗證XML文檔正確性。typeAliases 元素是包含全部typeAlias(別名)的列表,別名用來替換完整類名,這樣在須要完整類名的地方就能夠用別名來代替。environment元素體中包含對事務管理和鏈接池的環境配置。mappers元素是包含全部mapper(映射器)的列表,這些mapper的XML文件包含SQL代碼和映射定義信息。固然,在XML配置文件中還有不少能夠配置的,上面的示例指出的則是最關鍵的部分,其餘配置請參考Mybatis的官方文檔。
SqlSession
SqlSession對象的主要功能是完成一次數據庫的訪問和結果的映射,它相似於數據庫的session概念,因爲不是線程安全的,因此SqlSession對象的做用域需限制方法內。SqlSession的默認實現類是DefaultSqlSession,它有兩個必須配置的屬性:Configuration和Executor。Configuration前文已經描述這裏再也不多說。SqlSession對數據庫的操做都是經過Executor來完成的,Executor的具體功能在下一小節在描述。
到目前爲止,咱們看到的都是mybatis的流程,咱們的應用程序在什麼地方插入到這個流程中並得到咱們想要的結果呢?就是SqlSession這裏。SqlSession有一個重要的方法getMapper,顧名思義,這個方式是用來獲取Mapper對象的。什麼是Mapper對象?根據Mybatis的官方手冊,應用程序除了要初始並啓動Mybatis以外,還須要定義一些接口,接口裏定義訪問數據庫的方法,存放接口的包路徑下須要放置同名的XML配置文件。SqlSession的getMapper方法是聯繫應用程序和Mybatis紐帶,應用程序訪問getMapper時,Mybatis會根據傳入的接口類型和對應的XML配置文件生成一個代理對象,這個代理對象就叫Mapper對象。應用程序得到Mapper對象後,就應該經過這個Mapper對象來訪問Mybatis的SqlSession對象,這樣就達到裏插入到Mybatis流程的目的。示例代碼以下:
對應的接口:
對應的配置文件:
Executor
Executor對象在建立Configuration對象的時候建立,而且緩存在Configuration對象裏。Executor對象的主要功能是調用StatementHandler訪問數據庫,並將查詢結果存入緩存中(若是配置了緩存的話)。
StatementHandler
StatementHandler是真正訪問數據庫的地方,並調用ResultSetHandler處理查詢結果。
ResultSetHandler
處理查詢結果。