真的搞懂Mybatis原理了嗎

Mybatis是一個開源的支持定製化 SQL、存儲過程以及高級映射的半ORM框架

它的底層操作封裝了JDBC的API,工作原理以及核心流程與JDBC的使用步驟一脈相承

首先弄清楚核心對象

(1)SqlSession對象,該對象中包含了執行SQL語句的所有方法,類似於JDBC裏面的Connection 。
(2)Executor接口,它將根據SqlSession傳遞的參數動態地生成需要執行的SQL語句,同時負責查詢緩存的維護。類似於JDBC裏面的Statement/PrepareStatement。
(3)MappedStatement對象,該對象是對映射SQL的封裝,用於存儲要映射的SQL語句的id、參數等信息。
(4)ResultHandler對象,用於對返回的結果進行處理,最終得到自己想要的數據格式或類型。可以自定義返回類型。

在執行數據庫操作的過程中

(1)讀取MyBatis的配置文件。mybatis-config.xml爲MyBatis的全局配置文件,用於配置數據庫連接信息。
    (2)加載映射文件。映射文件即SQL映射文件,該文件中配置了操作數據庫的SQL語句,需要在MyBatis配置文件mybatis-config.xml中加載。mybatis-config.xml 文件可以加載多個映射文件,每個文件對應數據庫中的一張表。
    (3)構造會話工廠。通過MyBatis的環境配置信息構建會話工廠SqlSessionFactory。
    (4)創建會話對象。由會話工廠創建SqlSession對象,該對象中包含了執行SQL語句的所有方法。
    (5)Executor執行器。MyBatis底層定義了一個Executor接口來操作數據庫,它將根據SqlSession傳遞的參數動態地生成需要執行的SQL語句,同時負責查詢緩存的維護。
    (6)MappedStatement對象。在Executor接口的執行方法中有一個MappedStatement類型的參數,該參數是對映射信息的封裝,用於存儲要映射的SQL語句的id、參數等信息。
    (7)輸入參數映射。輸入參數類型可以是Map、List等集合類型,也可以是基本數據類型和POJO類型。輸入參數映射過程類似於JDBC對preparedStatement對象設置參數的過程。
    (8)輸出結果映射。輸出結果類型可以是Map、List等集合類型,也可以是基本數據類型和POJO類型。輸出結果映射過程類似於JDBC對結果集的解析過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章