MyBatis整合Spring的實現(1)

目的java

    MyBatis是一個基於Java的持久層框架。也是不少程序員的最愛,由於本身控制的SQL時,寫出一個好的SQL會大大的提升總體程序的性能。目前的項目通常都是MyBatis和Spring的整合,那麼具體的邏輯是什麼樣子呢?下面就來分析一下具體的代碼及邏輯。程序員

分析spring

1 Spring的XML配置(樣例):sql

對於上面XML的配置信息,也就是Spring對一個類進行了實例化。那咱們就來看看SqlSeesionFactoryBean類到底作了什麼操做呢?
數據庫

2 SqlSeesionFactoryBean屬性:mybatis

  /** 日誌類 */
  private final Log logger = LogFactory.getLog(getClass());
  /** mybatis的全局配置信息 */
  private Resource configLocation;
  /** mybatis的SQL文件信息 */
  private Resource[] mapperLocations;
  /** 數據源 */
  private DataSource dataSource;
  /** 事務工廠 */
  private TransactionFactory transactionFactory;
  /** spring配置文件中mybatis的屬性 */
  private Properties configurationProperties;
  /** SqlSessionFactoryBuilder  */
  private SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  /** mybatis的SqlSessionFactory工廠  */
  private SqlSessionFactory sqlSessionFactory;
  private String environment = SqlSessionFactoryBean.class.getSimpleName();
  private boolean failFast;
  /** spring配置文件中mybatis的攔截器 */
  private Interceptor[] plugins;
  /** spring配置文件中mybatis的自定義類型集合 */
  private TypeHandler<?>[] typeHandlers;
  /** spring配置文件中mybatis的自定義類型包 */
  private String typeHandlersPackage;
  /** spring配置文件中mybatis的別名集合 */
  private Class<?>[] typeAliases;
  /** spring配置文件中mybatis的別名包 */
  private String typeAliasesPackage;
  /** 數據庫產品名 */
  private DatabaseIdProvider databaseIdProvider = new DefaultDatabaseIdProvider();

3 實現接口InitializingBean:app

圖中因爲 實現了InitializingBean類,也就是須要執行初始化代碼。框架

這裏數據源與SqlSessionFactoryBuilder不能爲空,而後去構建SqlSessionFactory 。
ide

4 代碼實現:性能

4.1 生成一個MyBatis的全局對象Configuration(全局配置類)。


4.2 讀取typeAliasesPackage屬性並解析,放入Configuration(全局配置類)中,對應TypeAliasRegistry

4.3 讀取typeAliases屬性並解析,放入Configuration(全局配置類)中,對應TypeAliasRegistry類

4.4 讀取plugins屬性並解析,放入Configuration(全局配置類)中,對應InterceptorChain類。

4.5 讀取typeHandlersPackage屬性並解析,放入Configuration(全局配置類)中,對應TypeHandlerRegistry類。

4.6 讀取typeHandlers屬性並解析,放入Configuration(全局配置類)中,對應TypeHandlerRegistry類。

4.7 解析MyBatis的全局配置文件,放入Configuration(全局配置類),建立Spring事務。

4.8 從新生成環境信息,設置數據庫產品名稱。

4.9 解析MyBatis的SQL文件,放入Configuration(全局配置類)

10:最後生成一個SqlSessionFactory對象。

總結:

注意必定要區分,何時讀取Spring配置文件,何時讀取MyBatis配置文件。

具體MyBatis的操做只能一步一步的去研究。

相關文章
相關標籤/搜索