[Spring]MyBatis的執行原理

Duancf發表於2024-09-08

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

MyBatis的工作原理

image

從圖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框架後,讀者自然就會明白上面所講解的內容了。

相關文章