概念
rollbackFor :哪些异常需要回滚
noRollbackFor :哪些异常可以不回滚
异常分类:
- 运行时异常(RuntimeException):默认都回滚。 int a=1/0
- 编译时异常(RuntimeException以外的异常):默认不回滚。 throw IOException
注:
在@Transactional注解中如果不配置rollbackFor属性,那么事务只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事务在遇到非运行时异常时也回滚
测试代码(不涉及传播行为)
1. noRollbackFor :让运行时异常抛出时不回滚
@Transactional(noRollbackFor = {
ArithmeticException.class})
public void changeNum(){
testAMapper.addNumA();
int a = 1/0