MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 能夠使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。本文將經過debug的方式來了解其工做原理。數據庫
MyBatis 是支持定製化 SQL、存儲過程以及高級映射的優秀的持久層框架,其主要就完成2件事情:
1.封裝JDBC操做
2.利用反射打通Java類與SQL語句之間的相互轉換安全
Mybatis核心類:
SqlSessionFactory:每一個基於 MyBatis 的應用都是以一個 SqlSessionFactory 的實例爲中心的。SqlSessionFactory 的實例能夠經過 SqlSessionFactoryBuilder 得到。而 SqlSessionFactoryBuilder 則能夠從 XML 配置文件或經過Java的方式構建出 SqlSessionFactory 的實例。SqlSessionFactory 一旦被建立就應該在應用的運行期間一直存在,建議使用單例模式或者靜態單例模式。一個SqlSessionFactory對應配置文件中的一個環境(environment),若是你要使用多個數據庫就配置多個環境分別對應一個SqlSessionFactory.
SqlSession:SqlSession是一個接口,它有2個實現類,分別是DefaultSqlSession(默認使用)以及SqlSessionManager。SqlSession經過內部存放的執行器(Executor)來對數據進行CRUD。此外SqlSession不是線程安全的,由於每一次操做完數據庫後都要調用close對其進行關閉,官方建議經過try-finally來保證老是關閉SqlSession.
SqlSession:SqlSession是一個接口,它有2個實現類,分別是DefaultSqlSession(默認使用)以及SqlSessionManager。SqlSession經過內部存放的執行器(Executor)來對數據進行CRUD。此外SqlSession不是線程安全的,由於每一次操做完數據庫後都要調用close對其進行關閉,官方建議經過try-finally來保證老是關閉SqlSession。框架