springboot 两个方法都执行成功后数据才提交 if(daCustomerService.save(daCustomer)) { daMeterService.save(daMeter); }
时间: 2024-03-19 08:45:24 浏览: 54
springboot2+mybatis多种方式实现多数据配置方法
可以使用编程式事务管理实现两个方法都执行成功后数据才提交的需求。具体实现方式如下:
```java
@Autowired
private DataSourceTransactionManager transactionManager;
public void saveCustomerAndMeter(DaCustomer daCustomer, DaMeter daMeter) {
DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(definition);
try {
if (daCustomerService.save(daCustomer)) {
daMeterService.save(daMeter);
}
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
throw e;
}
}
```
在上面的代码中,我们使用了 `DataSourceTransactionManager` 进行事务管理。首先,我们通过 `transactionManager.getTransaction()` 方法获取一个事务对象,然后在 try-catch 块中执行两个方法,如果两个方法都执行成功,则手动提交事务,否则手动回滚事务。
注意,在这里的 `save()` 方法中,如果其中一个方法执行失败,需要抛出异常。如果不抛出异常,事务将不会回滚。
阅读全文