px754737592 2017-10-25 13:51 采纳率: 0%
浏览 2702

mybatis+spring如何在事务回滚时向上层返回结果

我是这样写的,但是try catch看着很不美观,而且手动回滚使得控制事务的代码侵入了业务层。

@Service
public class DepartmentServiceImpl {

    @Autowired
    private DepartmentMapper DepartmentMapper;

    @Transactional
    public ServiceResult addDepartment(Department department) {
        try {
            DepartmentMapper.insert(department);
            return new ServiceResult(0, "添加成功");
        } catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return new ServiceResult(-1, "添加失败");
        }
    }

    @Transactional
    public ServiceResult deleteDepartmentById(String id) {
        try {
            DepartmentMapper.deleteByPrimaryKey(id);
            return new ServiceResult(0, "删除成功");
        } catch (Exception e) {
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return new ServiceResult(-1, "删除失败");
        }
    }

} 

如果用第二种写法,虽然很简洁但是不能向上层返回信息

 @Transactional
    public void addDepartment(Department department) {      
        DepartmentMapper.insert(department);        
    }

请问有什么好的办法

  • 写回答

2条回答 默认 最新

  • 如影随形小浩儿 2017-10-26 02:06
    关注

    其实你可以把department返回回去,一般来说插入数据库成功后,你的department是会有id的,
    如果没成功就不会有id,那么你通过这个来判断就行了。

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题