1. 程式人生 > >mybatis解讀(一)——整體架構

mybatis解讀(一)——整體架構

MyBatis整體架構分為三層:基礎支援層、核心處理層、介面層。

基礎支援層:

  • 反射模組:
  • 型別轉換模組:MyBatis為簡化配置檔案提供了別名機制;
    為SQL語句繫結實參以及對映查詢結果集(實現JDBC型別與java型別之間的轉換)都是型別轉換模組的功能。
    在為SQL繫結實參時將java型別轉換成JDBC型別,在對映結果集時,會將資料由JDBC型別轉換為java型別。
  • 日誌模組:
  • 資源載入模組:對類載入器進行封裝,確定類載入器的使用順序,並提供了載入類檔案及其他資原始檔的功能。
  • 解析器模組:1:對XPath進行封裝,為MyBatis初始化時解析mybatisConfig.xml配置檔案以及對映配置檔案提供支援;
    2:為處理動態SQL語句中的佔位符提供支援。
{ xml解析常見的方式有三種:DOM(Document Object Model)、SAX(Simple API for XML)、StAX(Streaming API for XML);
MyBatis在初始化過程中處理mybatisConfig.xml配置檔案及對映配置檔案時,使用的是DOM解析方式,並結合使用XPath解析XML配置檔案。
DOM是基於樹形結構的XML解析方式,它會將整個XML文件讀入記憶體並構建一個DOM樹,基於這棵樹形結構對各個節點(Node)進行操作。}
  • 資料來源模組:
  • 事務模組:
  • 快取模組:
  • Binding模組:將使用者自定義的Mapper介面與對映配置檔案關聯起來,系統可以通過呼叫自定義Mapper介面中的方法執行相應的SQL語句完成資料庫操作。

開發人員無需編寫自定義Mapper介面的實現,MyBatis會自動為建立動態代理物件。

核心處理層:

  • 配置解析:在MyBatis初始化過程中,會載入mybatisConfig.xml配置檔案、對映配置檔案以及Mapper介面中的註解資訊,解析後的配置資訊會形成相應的物件並儲存到Configuration物件中。
  • SQL解析和scripting模組:MyBatis實現動態SQL語句功能,提供了多種動態SQL對應的節點,例如節點,節點,節點等。通過這些節點的組合使用,開發員可以寫出滿足各種需求的動態SQL語句。
    MyBatis的scripting模組會根據使用者傳入的實參,解析對映檔案中定義的動態SQL節點,並形成資料庫可執行的SQL語句。
    之後處理佔位符,繫結使用者傳入的實參。
  • SQL執行:執行SQL比較重要的幾個元件:Executor、StatementHandler、ParameterHandler、ResultSetHandler。
    Executor主要負責維護一級快取和二級快取,並提供事務管理的相關操作,它會將資料庫相關操作託付給StatementHandler完成;
    StatementHandler首先通過ParameterHandler完成SQL語句的實參繫結,然後通過java.sql.Statement物件執行SQL語句,並得到結果集;
    最後通過ResultSetHandler完成結果集的對映,得到結果物件並返回。

外掛:MyBatis提供了外掛介面,可以通過新增使用者自定義外掛進行MyBatis的擴充套件。

mybatis整體架構圖 mybatis整體架構圖