解决批量插入,事务单独回滚问题
**使用场景:**当批量插入或修改数据库数据时,循环中出现异常,只会滚出现异常的事务,其他数据正常提交。
操作步骤:
**1、**需要在项目中配置事务:
**2、**具体实现:
代码:
@Resource
private DataSourceTransactionManager metaTransactionManager;
public ApiResponse insert(){
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务,这样会比较安全些。
for (int i = 1; i < 6; i++) {
TransactionStatus status = metaTransactionManager.getTransaction(def);
metaMapper.insert(Long.valueOf(i));
try {
if (i == 3) {
int j = 3 / 0;
}
//手动事务提交
metaTransactionManager.commit(status);
} catch (Exception e){
//手动开启事务回滚
metaTransactionManager.rollback(status);
//可以添加错误日志
System.out.println("出错了" + i);
continue;
}
}
return ApiResponse.success();
}
亲测有效,如有不同见解欢迎来扰。。。