@Transactional
默认情况下,当被声明的方法在执行过程中抛出未捕获的 RuntimeException
或 Error
时会进行回滚。如果抛出的异常不是 RuntimeException
或 Error
,但又希望在发生这类异常时进行回滚,需要指定 rollbackFor
属性。
@Transactional
public ResultMessage save(Map<String, Object> goodsMap) throws Exception {
//1.保存订单到数据库代码
//2.扣减库存数据,并保存的数据库代码
if(保存的数量和扣减的数量对不上){
//抛出异常,并回滚
throw new RuntimeException("x x x x");
}
//若1、2其中一个代码运行时出现RuntimeException 或 Error 时,都会回滚
return new ResultMessage(Constant.SUCCESS.getCode(),"成功",null);
}