1. 程式人生 > >Mybatis整體架構

Mybatis整體架構

mybatis整體架構分為三層,分別是基礎支援層,核心處理層,介面層。


1,基礎支援層:基礎支援層含有整個mybatis的基礎模組,這些模組為核心處理層提供了良好的支撐。

(1)反射模組:mybatis提供了反射模組,該模組對java原生反射進行了良好封裝。

(2)型別轉換模組:mybatis為簡化配置檔案提供了別名機制,該機制是型別轉換模組的主要功能之一。另一個功能是實現JDBC型別和JAVA型別之間的轉換,該功能在為SQL語句繫結實參以及對映查詢結果集時會涉及。在為sql語句繫結實參的時候,會將資料由java型別轉換為JDBC型別,而在對映結果集的時候,會將資料由JDBC型別轉化為Java型別。

(3)日誌模組:良好日誌可以幫助開發測試人員迅速定位BUG程式碼,目前有很多優秀日誌框架例如log4j

(4)資源載入模組:

(5)解析器模組:

(6)資料來源模組:

(7)事務管理:

(8)快取模組:

(9)Binding模組:

2,核心處理層:在核心處理層中實現了mybatis的核心處理流程,其中包括mybatis的初始化和完勝一次資料庫操作的所有流程

(1)配置解析:在mybatis的初始化過程中,會載入mybatis-config.xml配置檔案,對映配置檔案以及Mapper介面中的註解資訊,解析後的配置資訊會形成相應的物件存在Configuration物件中,例如<resultMap>節點(即ResultSet的對映規則)

會被解析成ResultMap物件,<result>節點會被解析成ResultMapping物件,之後利用該Configuration物件建立SqlSessionFactory物件。等Mybatis初始化以後,開發人員可以通過初始化得到SqlSessionFactory建立SqlSession物件完成資料庫操作。

(2)SQL解析和scripting模組:通過節點的使用,可以寫出動態SQL語句。mybatis中的scripting模組會根據使用者傳入的引數,解析對映檔案中定義的動態SQL節點,並形成資料庫可以執行的Sql語句,之後會處理SQL語句中的佔位符,繫結使用者傳入的實參。

(3)SQL執行:SQL語句的執行涉及對個元件,其中比較重要的是Executor,StatementHandler,ParameterHandler和ResultSetHandler。Executor主要負責一級快取和二級快取,並提供是事務管理的相關操作,他會將資料庫相關操作委託給StatementHandler完成,StatementHandler首相通過ParammeterHandler完成SQL的實參繫結,然後通過statement物件執行sql語句,並得到結果集ResultSet,最後聽過ResultSetHandler完成結果集的對映,得到物件並返回。如下圖所示:


(4)外掛:mybatis提供了外掛介面,我們可以使用外掛來對mybatis進行擴充套件。

3,介面層:介面層的核心是SqlSession介面,該介面定義了Mybatis保留給應用的API,也就是上層應用和Mybatis互動的橋樑,