深入淺出Mybatis-與Spring集成
來源:程序員人生 發布時間:2017-02-17 09:25:04 閱讀次數:3495次
單獨使用mybatis是有很多限制的(比如沒法實現逾越多個session的事務),而且很多業務系統本來就是使用spring來管理的事務,因此mybatis最好與spring集成起來使用。
前置要求
版本要求
項目
|
版本
|
下載地址
|
說明
|
mybatis
|
3.0及以上
|
https://github.com/mybatis/mybatis⑶/releases
|
|
spring
|
3.0及以上
|
http://projects.spring.io/spring-framework/
|
|
mybatis-spring
|
1.0及以上
|
https://github.com/mybatis/spring/releases
|
|
spring事務配置
-
-
<context:component-scan base-package="com.xxx.service" />
-
-
-
<jee:jndi-lookup id="jndiDataSource" jndi-name="java:comp/env/jdbc/datasource" />
-
-
-
<bean id="txManager"
-
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-
<property name="dataSource" ref="jndiDataSource" />
-
</bean>
-
-
<tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>
單個集成
-
-
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-
<property name="dataSource" ref="jndiDataSource" />
-
<property name="configLocation" value="classpath:/mybatis/mybatis-config.xml" />
-
-
<property name="typeAliasesPackage" value="com.xxx.dto" />
-
</bean>
-
-
-
<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
-
<property name="mapperInterface" value="com.xxx.dao.UserDao" />
-
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
-
</bean>
我們不但要明白如何使用,更要明白為何要這么使用。
SqlSessionFactoryBean是1個工廠bean,它的作用就是解析配置(數據源、別名等)。
MapperFactoryBean是1個工廠bean,在spring容器里,工廠bean是有特殊用處的,當spring將工廠bean注入到其他bean里時,它不是注入工廠bean本身而是調用bean的getObject方法。我們接下來就看看這個getObjec方法干了些甚么:
-
public T getObject() throws Exception {
-
return getSqlSession().getMapper(this.mapperInterface);
-
}
看到這里大家應當就很明白了,這個方法和我們之前單獨使用Mybatis的方式是1樣的,都是先獲得1個Sqlsession對象,然后再從Sqlsession里獲得Mapper對象(再次強調Mapper是1個代理對象,它代理的是mapperInterface接口,而這個接口是用戶提供的dao接口)。自然,終究注入到業務層就是這個Mapper對象。
實際的項目1般來講不止1個Dao,如果你有多個Dao那就依照上面的配置順次配置便可。
如何使用批量更新
前1節講了如何注入1個mapper對象到業務層, mapper的行動依賴于配置,mybatis默許
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈