我们之前做事务管理都是添加@Transactional,但是这个注解只能加在类和方法上,对于方法比较大,但是只有其中部分代码我们需要做事务管理时可以使用。transactionManager。

 @Autowired
 private TransactionTemplate transactionTemplate;

    @Override
    public ChannelAddResponse add(ChannelAddRequest channelAddRequest)  {
        transactionTemplate.execute(action ->{
            TaskDO taskDO = new TaskDO();
            CopyParamNotNullUtil.copyPropertiesIgnoreNull(channelAddRequest, taskDO);
            taskDO.setStatus(TaskStatusEnum.UNEXECUTED.getStatus());
            taskDao.save(taskDO);

            ChannelDO channelDO = new ChannelDO();
            channelDO.setTaskDO(taskDO);
            CopyParamNotNullUtil.copyPropertiesIgnoreNull(channelAddRequest, channelDO);
            channelDao.save(channelDO);
            return null;
        });

}
这样就事务就和方法解柔了。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐