一个方法中有N个service方法进行数据库操作,如果某个发生异常,那么之前成功的数据库操作,也要回滚。

在该方法上添加注解@Transactional注解即可,出现异常能够自动回滚。但是如果代码中进行了tay catch去捕获异常,那么要在catch中去手动

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

回滚。添加代码:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

 

demo: 使用的mybatis-plus 

@Transactional
    @RequestMapping(value = "/xxxxxxxxxxx", method = RequestMethod.POST)
    public ResponseWrapper<Object> recordAdd(@RequestBody AddEnterpriseInfoDTO addEnterpriseInfoDTO,HttpSession session) {
        ResponseWrapper<Object> returnResult = new ResponseWrapper<Object>();

        try {
            EntEnterprisearchives etEnterprisearchives = addEnterpriseInfoDTO.getEtEnterprisearchives();
            EntManagementinfo entManagementLeaderInfo = addEnterpriseInfoDTO.getEntManagementLeaderInfo();
            EntManagementinfo entManagementCarCaptainInfo = addEnterpriseInfoDTO.getEntManagementCarCaptainInfo();

            if (etEnterprisearchives != null && entManagementLeaderInfo != null && entManagementCarCaptainInfo != null) {

                Date date = new Date();
                entManagementLeaderInfo.setRegtime(date);
                // 存储领导信息
 entManagementinfoService.saveOneObjCustom(entManagementLeaderInfo);                 Integer leaderId = entManagementLeaderInfo.getId();

                entManagementCarCaptainInfo.setRegtime(date);
                // 存储车队长信息
 entManagementinfoService.saveOneObjCustom(entManagementCarCaptainInfo);
                Integer carCaptainId = entManagementCarCaptainInfo.getId();

                log.info(">>>>>>leaderId=" + leaderId + ">>>>>>carCaptainId=" + carCaptainId);
                etEnterprisearchives.setLeaderId(leaderId);
                etEnterprisearchives.setCaptainId(carCaptainId);
                etEnterprisearchives.setRegtime(date);

 entEnterprisearchivesService.save(etEnterprisearchives);
                returnResult.setSuccess(true);
            } else {
                returnResult.setSuccess(false).setMsg("不允许参数信息为null");
            }

        } catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            log.info("xxxxxx异常,==>e.getMessage:" + e.getMessage() + ",==>e.getStackTrace():" + e.getStackTrace()+ ",==>e:" + e);
            returnResult.setSuccess(false).setMsg("xxxxxx");
        }
        return returnResult;
    }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄