MyBatis之Spring集成

概述

MyBatis與Spring集成,將由Spring管理Mapper接口,而且由Spring維護線程安全的SqlSession,自動管理SqlSession,包括事務提交、回滾、SqlSession關閉等機制。安全

怎麼作?

MyBatis與Spring集成,只須要定義兩個必要的bean就完事了。app

  1. 必須定義一個database的bean,這個其實不屬於MyBatis和Spring的範疇
  2. 定義一個SqlSessionFactoryBean,這個是必須的
  3. 定義MapperFactoryBean,做爲Mapper接口的FactoryBean,這個也是必須的
    1. 一個Mapper接口有一個MapperFactoryBean
    2. 一個MapperFactoryBean有一個SqlSession對象
    3. 這個SqlSession對象是SqlSessionTemplate對象,是線程安全的,內部維護SqlSession和線程的綁定關係
  4. 實際項目中Mapper接口是不少的,爲了避免讓咱們一個個去定義這麼的bean,Spring提供了不少的掃描機制
    1. 使用@MapperScan註解
    2. 定義一個MapperScannerConfigurer的bean,指定Mapper接口的包名

PS:不管是@MapperScan註解仍是定義MapperScannerConfigurer的bean,內部都使用ClassPathMapperScanner來掃描指定的包路徑,爲每個Mapper接口都建立一個MapperFactoryBean。spa

SqlSessionFactoryBean

SqlSessionFactoryBean實現Spring的FactoryBean,用於建立SqlSessionFactory對象,是須要定義一個。線程

MapperFactoryBean

MapperFactoryBean實現Spring的FactoryBean,用於建立某個Mapper接口的代理實現。一個MapperFactoryBean負責建立一個Mapper接口的實現,同時內部建立一個SqlSessionTemplate類型的SqlSession(線程安全),所以咱們須要定義多個。代理

爲了簡化咱們的工做,提供了兩中掃描機制:對象

  • @MapperScan
  • MapperScannerConfigurer

@MapperScan

Spring的JavaConfig方式的掃描,接口

MapperScannerConfigurer

相關文章
相關標籤/搜索