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對結果集的解析過程。