一、具体代码:
@Transactional(rollbackFor = Exception.class)
二、使用说明:
通常都是加在具体的方法上面的(serviceImpl层方法):
eg:
在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚。
【我的理解:比如一个类里写了三个方法,只有三个方法都成功时才会一起执行,执行第一个方法成功了,放事务里;第二个方法失败了,也在事务里。但是因为第二个方法失败了,所以这个事务里的所有操作都不实际执行。 (如果理解错了勿喷求指点啊 谢谢哥哥姐姐弟弟妹妹们)】
三、
1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)
注意: 如果异常被try{}catch{}了,事务就不回滚了,如果想让事务回滚必须再往外抛try{}catch{throw Exception}。
参考文章: