springboot 两个方法都执行成功后数据才提交 public ResultRespone saveYhda(@RequestBody DaCustomer daCustomer,@RequestBody DaMeter daMeter ) { //获取最大用户编号 Map<String ,Object> map= daCustomerMapper.selectMaxCustomerNo(); int yhbh=Integer.parseInt(map.get("CUSTOMER_NO").toString())+1; daCustomer.setCustomerNo(String.valueOf(yhbh)); daCustomer.setCustomerNoOld(String.valueOf(yhbh)); if(daCustomerService.save(daCustomer)) { daMeterService.save(daMeter); } return ResultRespone.success(); }
时间: 2024-03-19 21:45:28 浏览: 67
SpringBoot异步调用方法并接收返回值
可以使用声明式事务管理(基于注解的方式)实现两个方法都执行成功后数据才提交的需求。具体实现方式如下:
```java
@Transactional(rollbackFor = Exception.class)
public ResultRespone saveYhda(@RequestBody DaCustomer daCustomer, @RequestBody DaMeter daMeter) {
//获取最大用户编号
Map<String, Object> map = daCustomerMapper.selectMaxCustomerNo();
int yhbh = Integer.parseInt(map.get("CUSTOMER_NO").toString()) + 1;
daCustomer.setCustomerNo(String.valueOf(yhbh));
daCustomer.setCustomerNoOld(String.valueOf(yhbh));
if (daCustomerService.save(daCustomer)) {
daMeterService.save(daMeter);
}
return ResultRespone.success();
}
```
在上面的代码中,我们通过在方法上添加 `@Transactional` 注解实现了事务管理。该注解默认开启了一个事务,如果方法执行成功,则自动提交事务,否则自动回滚事务。同时,我们还通过 `rollbackFor` 属性配置了回滚的异常类型。在这里,我们配置了所有异常类型都会回滚事务。
需要注意的是,在这里的 `save()` 方法中,如果其中一个方法执行失败,会抛出异常,事务将自动回滚。同时,由于该方法使用了 `@RequestBody` 注解,需要确保请求体中包含正确的 JSON 数据,否则会导致请求失败。
阅读全文