1. 程式人生 > 其它 >MyBatis的執行原理詳細介紹

MyBatis的執行原理詳細介紹

MyBatis的執行原理詳細介紹

更新時間:2021年09月17日15時18分 來源:傳智教育 瀏覽次數:1832

為了使大家能夠更加清晰的理解MyBatis程式,在正式講解MyBatis入門案例之前,先來了解一下MyBatis程式的工作原理,如圖1所示。

 

 

圖1 MyBatis框架執行流程圖

從圖1可以看出,MyBatis框架在操作資料庫時,大體經過了8個步驟。下面就對圖1中的每一步流程進行詳細講解,具體如下。


(1)讀取MyBatis配置檔案mybatis-config.xml。mybatis-config.xml作為MyBatis的全域性配置檔案,配置了MyBatis的執行環境等資訊,其中主要內容是獲取資料庫連線。


(2)載入對映檔案Mapper.xml。Mapper.xml檔案即SQL對映檔案,該檔案中配置了操作資料庫的SQL語句,需要在mybatis-config.xml中載入才能執行。mybatis-config.xml可以載入多個配置檔案,每個配置檔案對應資料庫中的一張表。


(3)構建會話工廠。通過MyBatis的環境等配置資訊構建會話工廠SqlSessionFactory。


(4)建立SqlSession物件。由會話工廠建立SqlSession物件,該物件中包含了執行SQL的所有方法。


(5)MyBatis底層定義了一個Executor介面來操作資料庫,它會根據SqlSession傳遞的引數動態的生成需要執行的SQL語句,同時負責查詢快取的維護。


(6)在Executor介面的執行方法中,包含一個MappedStatement型別的引數,該引數是對對映資訊的封裝,用來儲存要對映的SQL語句的id、引數等。Mapper.xml檔案中一個SQL對應一個MappedStatement物件,SQL的id即是MappedStatement的id。


(7)輸入引數對映。在執行方法時,MappedStatement物件會對使用者執行SQL語句的輸入引數進行定義(可以定義為Map、List型別、基本型別和POJO型別),Executor執行器會通過MappedStatement物件在執行SQL前,將輸入的Java物件對映到SQL語句中。這裡對輸入引數的對映過程就類似於JDBC程式設計中對preparedStatement物件設定引數的過程。


(8)輸出結果對映。在資料庫中執行完SQL語句後,MappedStatement物件會對SQL執行輸出的結果進行定義(可以定義為Map和List型別、基本型別、POJO型別),Executor執行器會通過MappedStatement物件在執行SQL語句後,將輸出結果對映至Java物件中。這種將輸出結果對映到Java物件的過程就類似於JDBC程式設計中對結果的解析處理過程。

通過上面對MyBatis框架執行流程的講解,相信讀者對MyBatis框架已經有了一個初步的瞭解。對於初學者來說,上面所講解的內容可能不會完全理解,現階段也不要求讀者能完全理解,這裡講解MyBatis框架的執行過程是為了方便後面程式的學習。在學習完MyBatis框架後,讀者自然就會明白上面所講解的內容了。