1. 程式人生 > >MyBatis概述與架構

MyBatis概述與架構

MyBatis介紹

MyBatis本是apache的一個開源專案iBatis,2010年這個專案由apache software foundation遷移到了google code,並且改名為MyBatis。2013年11月遷移到Github。
MyBatis是一個優秀的持久層框架,它對jdbc的操作資料庫的過程進行封裝,使開發者只需要關注SQL本身,而不需要花費精力去處理例如註冊驅動、建立connection、建立statement、手動設定引數、結果集檢索等jdbc繁雜的過程程式碼。
Mybatis通過xml或註解的方式將要執行的各種statement(statement、preparedStatemnt、CallableStatement)配置起來,並通過java物件和statement中的sql進行對映生成最終執行的sql語句,最後由mybatis框架執行sql並將結果對映成java物件並返回。


MyBatis架構

在這裡插入圖片描述

  • SqlMapConfig.xml,此檔案作為mybatis的全域性配置檔案,配置了mybatis的執行環境等資訊。mapper.xml檔案即sql對映檔案,檔案中配置了操作資料庫的sql語句,此檔案需要在SqlMapConfig.xml中載入。

  • 通過mybatis環境等配置資訊構造SqlSessionFactory(即會話工廠)。

  • 由會話工廠建立sqlSession即會話,操作資料庫需要通過sqlSession進行。

  • mybatis底層自定義了Executor執行器介面操作資料庫,Executor介面有兩個實現,一個是基本執行器、一個是快取執行器。

  • MappedStatement也是mybatis一個底層封裝物件,它包裝了mybatis配置資訊及sql對映資訊等。mapper.xml檔案中一個sql對應一個MappedStatement物件,sql的id即是MappedStatement的id。

  • MappedStatement對sql執行輸入引數進行定義,包括HashMap、基本型別、pojo,Executor通過MappedStatement在執行sql前將輸入的java物件對映至sql中,輸入引數對映就是JDBC程式設計中對preparedStatement設定引數。

  • MappedStatement對sql執行輸出結果進行定義,包括HashMap、基本型別、pojo,Executor通過MappedStatement在執行sql後將輸出結果對映至java物件中,輸出結果對映過程相當於JDBC程式設計中對結果的解析處理過程。