我爱java系列---【springBoot中手动开启事务】

springBoot中手动开启事务,直接看例子:

    @Autowired
    DataSourceTransactionManager dataSourceTransactionManager;
    @Autowired
    TransactionDefinition transactionDefinition;
    TransactionStatus transactionStatus = null;

    @Override
    public void add(ChannelDetail channelDetail) {

        try {
            log.info("通道管理实现类-新增-入参:channelDetail:{}", channelDetail);
            //手动开启事务
            transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
            //新增通道信息
            channelMapper.insertSelective(channelDetail.getChannel());
            //生效时间默认为当天生效
            ChannelPriceBatch channelPriceBatch = channelDetail.getChannelPriceBatch();
            channelPriceBatch.setChannelId(channelDetail.getChannel().getId());
            channelPriceBatchMapper.insert(channelPriceBatch);
            //手动提交事务
            dataSourceTransactionManager.commit(transactionStatus);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            //手动回滚事务
            dataSourceTransactionManager.rollback(transactionStatus);
            throw new RuntimeException("新增通道失败");
        }
    }

猜你喜欢

转载自www.cnblogs.com/hujunwei/p/12193443.html
今日推荐