一 MyBatis 四大核心組件
- SqlSession對象
- 該對象中包含了執(zhí)行SQL語句的所有方法
- 類似于JDBC里面的Connection .
Executor接口,它將根據(jù)SqlSession傳遞的參數(shù)動態(tài)地生成需要執(zhí)行的SQL語句,同時負責查詢緩存的維護。類似于JDBC里面的Statement/PrepareStatement。
MappedStatement對象,該對象是對映射SQL的封裝,用于存儲要映射的SQL語句的id、參數(shù)等信息。
ResultHandler對象,用于對返回的結(jié)果進行處理,最終得到自己想要的數(shù)據(jù)格式或類型??梢宰远x返回類型。
二 MyBatis 工作原理及其核心流程
讀取MyBatis的配置文件。mybatis-config.xml為MyBatis的全局配置文件,用于配置數(shù)據(jù)庫連接信息。
加載映射文件。映射文件即SQL映射文件,該文件中配置了操作數(shù)據(jù)庫的SQL語句,需要在MyBatis配置文件mybatis-config.xml中加載。mybatis-config.xml 文件可以加載多個映射文件,每個文件對應(yīng)數(shù)據(jù)庫中的一張表。
構(gòu)造會話工廠。通過MyBatis的環(huán)境配置信息構(gòu)建會話工廠SqlSessionFactory。
創(chuàng)建會話對象。由會話工廠創(chuàng)建SqlSession對象,該對象中包含了執(zhí)行SQL語句的所有方法。
Executor執(zhí)行器。MyBatis底層定義了一個Executor接口來操作數(shù)據(jù)庫,它將根據(jù)SqlSession傳遞的參數(shù)動態(tài)地生成需要執(zhí)行的SQL語句,同時負責查詢緩存的維護。
MappedStatement對象。在Executor接口的執(zhí)行方法中有一個MappedStatement類型的參數(shù),該參數(shù)是對映射信息的封裝,用于存儲要映射的SQL語句的id、參數(shù)等信息。
輸入?yún)?shù)映射。輸入?yún)?shù)類型可以是Map、List等集合類型,也可以是基本數(shù)據(jù)類型和POJO類型。輸入?yún)?shù)映射過程類似于JDBC對preparedStatement對象設(shè)置參數(shù)的過程。
輸出結(jié)果映射。輸出結(jié)果類型可以是Map、List等集合類型,也可以是基本數(shù)據(jù)類型和POJO類型。輸出結(jié)果映射過程類似于JDBC對結(jié)果集的解析過程。