1.事务注解
将需要操作更改数据库表的一段代码封装到一个方法中,方法加事务注解 :
@Transactional(rollbackFor = Exception.class)
2.自定义异常
自定义一个异常类,再上面的方法中,如果由于业务逻辑需要回滚数据,在for循环更改数据库表的代码中try抛出这个异常并用catch捕获,然后在catch中手动回滚数据:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
public class XXXException extends RuntimeException {
/**
* 异常code
*/
private String code;
/**
* 异常信息
*/
private String message;
private XXXException(){
}
/**
* 构造方法
* @param code
* @param message
*/
public XXXException(String code, String message) {
this.message = message;
this.code = code;
}
}