spring boot中的事务处理
@Transactional(rollbackFor = Exception.class) //所有异常都回滚
public void setDefault(AddressBook addressBook) {
//1、将当前用户的所有地址修改为非默认地址 update address_book set is_default = ? where user_id = ?
addressBook.setIsDefault(0);
addressBook.setUserId(BaseContext.getCurrentId());
addressBookMapper.updateIsDefaultByUserId(addressBook);
//2、将当前地址改为默认地址 update address_book set is_default = ? where id = ?
addressBook.setIsDefault(1);
addressBookMapper.update(addressBook);
}
--------------------------------
1.要添加@transaction标签
2.这个标签默认只有运行时异常才会回滚事务,所以就在后面添加(rollbackFor = Exception.class)表示所有的异常产生都会回滚
3.还有个标签propagation,一般当一个开启事务的方法中添加另一个开启事务的方法时才会用到;
默认是如果不指定默认用的是(propagation = Propagation.REQUIRES) 表示会加入到另一个事务中去,合并为同一个事务;
如果指定了(propagation = Propagation.REQUIRES_NEW) 表示此事务与其他事务间不会相互影响,会建立一个新事务;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!

