轉自:http://fhd001.iteye.com/blog/1125528
myBatis3與spring整合之SqlSessionFactoryBean
----------
在基本的MyBatis中,session工廠可以使用SqlSessionFactoryBuilder來創建。在MyBatis-Spring中,使用SqlSessionFactoryBean來替代。
SqlSessionFactoryBean實現了spring的FactoryBean接口。這就說明由spring最終創建的bean不是SqlSessionFactoryBean本身,而是工廠類的getObject()返回的方法結果。這種情況下,spring將會在應用啓動時爲你創建SqlSessionFactory對象,然後將它以SqlSessionFactory爲名來存儲。
在一般的MyBatis-spring用法中,你不需要直接使用SqlSessionFactoryBean或其對應的SqlSessionFactory。相反,session工廠將會被注入到MapperFactoryBean或其它擴展了SqlSessionDaoSupport的DAO中。
屬性
SqlSessionFactory有一個單獨的必須屬性,就是JDBC的DataSource。這可以是任意的DataSource。其配置應該和其它spring數據庫連接是一樣的。
一個通用的屬性是configLocation,它是用來指定MyBatis的xml配置文件路徑的。如果基本的MyBatis配置需要改變,那麼這就是一個需要它的地方。通常這會是<settings>或<typeAliases>的部分。要注意這個配置文件不需要是一個完整的MyBatis配置。確定地說,任意環境,數據源和myBatis的事務管理器都會被忽略。SqlSessionFactoryBean會創建它自己的,使用這些值定製MyBatis的Environment時是需要的。
如果myBatis映射器xml文件在和映射器類相同的路徑下不存在,那麼另外一個需要配置文件的原因就是它了。使用這個配置,有兩種選擇。第一是手動在myBatis的xml配置文件中使用<mappers>部分來指定類路徑。第二是使用工廠bean的mapperLocations屬性。mapperLocations屬性使用一個資源位置的list。這個屬性可以用來指定myBatis的xml映射器文件的位置。如:
- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="configLocation" value="classpath:mybatis.xml" />
- <property name="mapperLocations" value="classpath:mapper/**/*.xml" />
- </bean>
在容器環境管理事務中,一個可能需要的屬性是transactionFactoryClass。