更新時間:2023-05-12 來源:黑馬程序員 瀏覽量:
MyBatis是一個支持普通SQL查詢、存儲及高級映射的持久層框架,它幾乎消除了JDBC的冗余代碼。使Java開發人員可以使用面向對象的編程思想來操作數據庫。對于MyBatis的工作原理和操作流程的理解,我們先來看下面的工作流程圖。
MaBatis的工作流程
在上圖中,MyBatis操作數據庫的流程分為8個步驟,具體介紹如下。
(1)MyBatis讀取核心配置文件mybatis-config.xml
mybatis-configxml核心配置文件主要配置了MyBatis的運行環境等信息。
(2)加載映射文件Mapperxml
Mapper.xml文件即SQL映射文件,該文件配置了操作數據庫的SQL.語句,需要在mybatis-oonfig.xml中加載才能執行。mybatis-configxml 可以加載多個映射文件,每個映射文件對應數據庫中的一張表。
(3)構造會話工廠
通過MyBatis的環城h配置信息構建會話工廠SqlSessionFactory,用于創建SqlSession。
(4)創建會話對象
由會話工廠SqlSessionFactory 創建SqlSession對象,該對象中包含了執行SQL.語句的所有方法。
(5)創建執行器
會話對象本身不能直接操作數據庫,MyBanis底層定義了一個Executor接口用于操作數據庫,執行器會根據SqlSessinn傳遞的參數動態的生成需要執行的SQL.語句,同時負責查詢緩存地維護
(6)封裝SQL信息
SqlSession 內部通過執行器Executor 操作數據庫,執行器將待處理的SQL.信息封裝到MappelStatement對象中,MappedlStatement對象中存儲了要映射的SQL.語句的id、參數等。Mappetxml文件中一個SQL語句對應一個MappedStatement 對象,SQL語句的id即是MappedStatement 的id。Eveeator 執行器會在執行SQL語句之前,通過MappelStatement對象將輸人的參數映射到SQL.語句中。
(7)操作數據庫
根據動態生成的SQL操作數據庫。
(8)輸出結果映射
執行SQL.語句之后,通過MappedStatement對象將輸出結果映射至Java對象中。通過上面對MyBatis框架工作原理的講解,相信讀者對MyBatis框架已經有了一個初步的了解。