一、sqlSessionFactory的配置
dataSource屬性
該屬性必須配置,多數據源時會有多個dataSource,同時也需要配置多個sqlSessionFactory來對應。
mapperLocations屬性
配置該屬性後,sqlSessionFactory會自動掃描該路徑下的所有文件並解析。
該路徑支持多個,可以用,;\t\n進行分割。
每一個路徑都可以用直接的包路徑,或者Ant風格的表達式。
configLocation屬性
上面例子中並沒有使用該屬性,當SqlSessionFactoryBean提供的配置不能滿足使用時,你可以使用mybatis-config.xml配置文件配置其他屬性,然後通過configLocation屬性指定該配置的路徑,SqlSessionFactoryBean會使用該配置文件創建Configuration。
typeAliasesPackage屬性
該屬性可以給包中的類註冊別名,註冊後可以直接使用類名,而不用使用全限定的類名(就是不用包含包名)。
該屬性可以配置多個,可以用,;\t\n進行分割。但是不支持Ant風格的路徑。
plugins屬性
該屬性可以配置MyBatis的攔截器,攔截器的配置順序會影響攔截器的執行順序。
從上往下的攔截器,實際的執行順序是這樣,第一個攔截器會最後執行,最後一個會首先執行。
然後出攔截器的順序和配置的順序一致,第一個最先返回,最後一個最後返回。
就以上面的配置爲例,一個簡單的執行順序圖如下:
執行順序
這些攔截器執行的順序都是環繞型,不要簡單理解爲簡單的順序執行。
從配置順序來看,第一個配置的在最裏面,後面的依次環繞上一個攔截器。
二、MapperScannerConfigurer的配置
爲了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 編寫數據訪問對象 (DAO)的代碼,MyBatis-Spring 提供了一個動態代理的實現:MapperFactoryBean。這個類 可以讓你直接注入數據映射器接口到你的 service 層 bean 中。當使用映射器時,你僅僅如調 用你的 DAO 一樣調用它們就可以了,但是你不需要編寫任何 DAO 實現的代碼,因爲 MyBatis-Spring 將會爲你創建代理。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xxx.mybatis.mapper"/>
<property name="annotationClass" value="XXX"/>
<property name="sqlSessionFactoryBeanName" ref="sqlSessionFactory"/>
</bean>
basePackage屬性basePackage可以寫多個,可以用,;\t\n進行分割。
每一個路徑都可以用直接的包路徑,或者Ant風格的表達式。
annotationClass屬性
該屬性實際上就是起到一個過濾的作用,如果設置了該屬性,那麼MyBatis的接口只有包含該註解,纔會被掃描進去。
sqlSessionFactoryBeanName屬性
這個屬性一般都用不到,只有當你配置多數據源的時候,這是會有多個sqlSessionFactory,你就需要通過該屬性來指定哪一個sqlSessionFactory(值爲SqlSessionFactoryBean <bean>配置中的id屬性)