MyBatis架構及其運行流程

0x00:MyBatis 架構組成

MyBatis 整體的架構組成為:數據源配置文件、SQL 映射配置文件、會話工廠、會話、執行器以及底層封裝對象組成。

0x01:數據源配置文件

對於持久層框架,連接數據庫是最重要的一步。MyBatis 框架對於數據庫連接的配置信息採用了數據庫連接池的形式。數據庫連接池負責分配、管理、和釋放數據庫連接,其只使用一個連接,提高了操作性能。不像 JDBC,每次對數據庫操作,都需要連接然後釋放,這也是 MyBatis 相對 JDBC 其中的一個優點。

程序本身就不用再關心數據庫的配置信息,交給 MyBatis 配置文件管理即可。文件名為 SqlMapConfig.xml。其中配置了數據庫驅動、數據庫連接地址、數據庫用戶名和密碼、事務管理等參數。例如以下示例:

             

連接池中的 org.git.mm.mysql.Driver 是 com.mysql.jdbc.Driver 的之類,也是 Mysql 數據庫的連接驅動,如果項目中有整合 SpringMVC 框架時,則連接池可配在 SpringMVC 的配置文件中。

0x02:SQL 映射配置文件

在 JDBC 中,sql 語句一般會寫在 java 文件中,而 MyBatis 會將這些 sql 語句單獨放在配置文件中 Mapper.xml。

作用流程:MyBatis 會根據配置文件中的參數配置,將組裝了參數的 Java 對象或 Map 對象中的相關字段與 Mapper.xml 中的參數配置做匹配,將相關參數綁定到需要執行的 sql 語句上。其 Mapper.xml 配置文件,完成了對 sql 語句的映射配置。例如以下示例:

 

其中,id 是 sql 語句要綁定的字段名,parameterType 是綁定字段的類型,resultType 是把結果映射為一個 Java 對象。

Mapper.xml 文件一般配置在 SqlMapConfig.xml 中,示例代碼如下:

  

0x03:會話工廠與會話

當數據庫連接池配置文件 SqlMapConfig.xml 和 sql 映射配置文件 Mapper.xml 都準備好後,就需要相關的程序來讀取並加載這些配置文件的信息,MyBatis 用來處理這些配置文件的核心對象就是會話工廠與會話。

MyBatis 中,會話工廠是 SqlSessionFactory 類。SqlSessionFactory 會根據數據庫配置信息產生可以連接數據庫並與其交互的 SqlSession 會話實例類。而 SqlSession 實例類,便會依照 Mapper 配置文件中的 sql 配置,對數據庫執行增刪改查的操作。

0x04:執行器和底層封裝對象

SqlSession 類內部是通過執行器 Executor 對數據庫進行操作的,執行器 Executor 與數據庫交互,依靠的是底層封裝對象 Mappered Statement,這個底層對象 Mappered Statement 封裝了從 Mapper 文件讀取信息的功能,讀取的內容包括 sql 語句、輸入參數、輸出結果類型等。

0x05:MyBatis 運行流程

MyBatis 的運行流程其實就是其架構的處理流程,總結下如下:

首先,SqlSessionFactory 會話工廠會加載 SqlMapConfig.xml 配置文件信息,然後生成一個可以與數據庫交互的會話實例類 SqlSession,會話實例類 SqlSession 會根據 Mapper 配置文件中的 sql 配置,去執行相應的增刪改查操作。這樣,MyBatis 就實現了與數據庫的交互功能。

MyBatis 運行流程結構圖如下:

MyBatis架構及其運行流程

當了解了 MyBatis 運行流程後,會更好更容易的去學習這個框架。


分享到:


相關文章: