前言
你可以把mybatis整合到spring, 也可以把事务交给spring来管理。
你也可以同时使用mybatis和spring,而不把mybatis整合到spring,mybatis自己管理事务。
mybatis的事务是如何被spring接管的?
事务底层是jdbc事务。
sqlSession最终走的还是jdbc connection.
基本配置
第一步:注入sqlSessionFactory
In MyBatis-Spring, an SqlSessionFactoryBean is used to create an SqlSessionFactory . To configure the factory bean, put the following in the Spring XML configuration file:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
第二步:扫描并注入mapper对象
有三种方式,
Using the <mybatis:scan/> element.
Using the annotation @MapperScan
Using a classic Spring xml file and registering the MapperScannerConfigurer
第三种方式:MapperScannerConfigurer
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="org.mybatis.spring.sample.mapper" />
</bean>
第三步:事务管理
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
@Transactional
在service层注解,指定业务逻辑是事务的。
可以注解在service class上,也可以注解在方法上。