单数据源增加事务
此方法转载自
https://www.jianshu.com/p/9b5eb43236cc
@Service
public class PersonService {
@Resource
private PersonMapper personMapper;
@Resource
private CompanyMapper companyMapper;
@Transactional(rollbackFor = {RuntimeException.class, Error.class})
public void saveOne(Person person) {
Company company = new Company();
company.setName("tenmao:" + person.getName());
companyMapper.insertOne(company);
personMapper.insertOne(person);
}
}
注解属性
rollbackFor:触发回滚的异常,默认是RuntimeException和Error
isolation: 事务的隔离级别,默认是Isolation.DEFAULT也就是数据库自身的默认隔离级别,比如MySQL是ISOLATION_REPEATABLE_READ可重复读
这样就可以了,不需要其他配置。
ps:网络上还说要在@SpringBootApplication上添加注解@EnableTransactionManagement,已经不需要了
多数据源事务
在对应的DasourceConfig中增加如下代码:
@Bean (name="ESCMEDITransactionManager")
public DataSourceTransactionManager TransactionManager() {
return new DataSourceTransactionManager(ds1);
}
在相应的Service方法上增加注解
@Transactional(transactionManager = "EEDTransactionManager",rollbackFor=Exception.class)