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, "", "参数错误");
    }
    }
  • 相关阅读:
    greybox关闭/刷新父窗口
    C# 获取文件编码
    框架页,URL中文参数乱码
    用来代替SQLSERVERAGENT的VBS脚本。
    jQuery的radio,checkbox,select操作
    mssql 的sp_help好难看
    如何判断网通、电信、铁通IP地址分配段
    IE8取不到 select 的option值
    如何识别当前的 SQL Server 版本号以及对应的产品级别
    控诉我的电脑
  • 原文地址:https://www.cnblogs.com/guanxiaohe/p/11727467.html
Copyright © 2011-2022 走看看