Mybatis中可以通过使用Spring框架来注入事务。在Spring中,可以使用@Transactional注解来标记需要进行事务管理的方法,使其成为一个事务操作。
同时,还需在Spring配置文件中配置事务管理器,将其与数据源绑定。
当调用被@Transactional注解标记的方法时,Spring会自动开启事务,执行方法,如果方法执行成功,则提交事务,否则回滚事务,保证数据的一致性。这样,就可以在Mybatis中实现事务注入。
mybatis注入事务首先要在 spring-mybatis的配置文件添加 事务支持,和事务annotation支持,从而实现功能的完善。
注意:如果是mysql请使用innodb innodb 支持事务功能,myisam 不支持。
<!-- transaction support-->
<!-- PlatformTransactionMnager -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- enable transaction annotation support -->。
注解,
直接在类上面写注解表示整个类的方法都支持事务
@Transactional
@Component
public class UserSerImpl extends BaseServiceImpl<User> implements UserSer{
也可写在方法上
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void updateFoo(Foo foo) {
// do something
}
也可同时在类和方法上
@Transactional(readOnly = true)
public class DefaultFooService implements FooService {
public Foo getFoo(String fooName) {
// do something
}
// these settings have precedence for this method
//方法上注解属性会覆盖类注解上的相同属性
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void updateFoo(Foo foo) {
// do something
}
}。