zoukankan      html  css  js  c++  java
  • springBoot自定义事务管理

    1.在springBoot项目中service的实现类可以通过注解@Transactional添加事务

    2.可以通过设置包名统一设置事务

    3.自定义代码内设置事务
    (1).注入事务管理类

    @Resource
    PlatformTransactionManager platformTransactionManager;
    @Resource
    TransactionDefinition transactionDefinition;


    (2)使用事务

    public void saveAgentCert(BaseCertDto dto) {
    SetDtoUtil.initOtherDto(dto);
    if (dto.getBaseCerts().size() > 0) {
    //手动开启事务
    TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
    String certId = null;
    String vendorId = dto.getVendorId();
    try {
    //这里一定要先获取到主信息certId 再保存代理信息 所以两个循环
    for (BaseCert cert : dto.getBaseCerts()) {
    //代理资质资质等级字段,范围由0-n 前端用于区分代理级别,0代表主资质信息
    if (0 == cert.getAgentLevel()) {
    List<BaseCertFile> baseCertFiles = cert.getBaseCertFiles();
    cert.setBaseCertFiles(null);
    //保存授权资质主信息
    BaseCertDto dto1 = new BaseCertDto();
    dto1.setBaseCert(cert);
    save(dto1);
    certId = dto1.getBaseCert().getCertId();
    String fileCertId = certId;
    //保存授权资质文件信息
    saveAuthorCertFileInfo(vendorId, baseCertFiles, fileCertId);
    }
    }
    
    for (BaseCert cert : dto.getBaseCerts()) {
    if (0 != cert.getAgentLevel()) {
    List<BaseCertFile> baseCertFiles = cert.getBaseCertFiles();
    cert.setBaseCertFiles(null);
    //保存授权资质代理信息
    BaseAgentCertDto baseAgentCertDto = saveAgentCertInfo(certId, cert);
    String fileCertId = baseAgentCertDto.getBaseAgentCert().getAgentCertId();
    //保存授权资质文件信息
    saveAuthorCertFileInfo(vendorId, baseCertFiles, fileCertId);
    }
    }
    //手动提交事务
    platformTransactionManager.commit(transactionStatus);//提交
    SetDtoUtil.setSuccessDto(dto, "操作成功");
    } catch (Exception e) {
    //手动回滚事务
    platformTransactionManager.rollback(transactionStatus);//最好是放在catch 里面,防止程序异常而事务一直卡在哪里未提交
    logger.error(e.getMessage(), e);
    SetDtoUtil.setFailDto(dto, "保存失败", "error");
    }
    } else {
    SetDtoUtil.setFailDto(dto, "", "参数错误");
    }
    }
  • 相关阅读:
    go基础笔记-程序流程控制
    Linux:Day14(上) Centos系统安装
    Linux:Day14(上)
    Linux:Day13(上) CentOS系统启动流程
    Linux:Day13(下) GRUB
    Linux:Day12(下) 进程、任务计划
    Linux:Day12(上) 进程
    Linux:Day10 程序包管理
    Linux:Day24(下) samba
    Linux:Day8(下) RAID
  • 原文地址:https://www.cnblogs.com/guanxiaohe/p/11727467.html
Copyright © 2011-2022 走看看