前言
Spring Boot框架是有默认的事务配置,所以不需要添加什么依赖或者配置文件即可实现事务管理。
方法
只需要在项目的service包下的业务接口的实现类中的方法上添加@Transactional注解,并通过cry…catch抛出RuntimeException异常就可以实现事务的控制和回滚
项目结构图如下:
范例代码如下:
/**
* 删除订单
* @param orderId
*/
@Override
@Transactional
public void removeOrder(Integer orderId) {
try {
//获取订单的订单项集合
List<Orderitem> orderitemList = orderitemMapper.selectOrderitems(orderId);
for (Orderitem orderitem : orderitemList) {
Integer bookId = orderitem.getBook_id();
String quynum = orderitem.getBuynum().toString();
//恢复库存
booksMapper.updateBookQuantity(bookId, quynum);
}
//删除订单项
orderitemMapper.deleteOrder(orderId);
//删除订单
ordersMapper.deleteByPrimaryKey(orderId);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException();
}
}
在这个方法中,只有当恢复库存、删除订单项、删除订单全部执行成功,事务才会提交,如果执行失败就会走catch抛出RuntimeException异常进行事务的回滚。之所以要new RuntimeException()是因为只有抛出这个异常才会数据回滚,如果是非RuntimeException异常数据是不会回滚的。
如果有帮助到你,点个赞呗 ^ ~ ^