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,那么你通过这个来判断就行了。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!