Spring Boot+mybatis使用@Transation無効

2134 ワード

プロジェクトの新規作成中に異常が発生したらロールバックし、service実現方法に@Transactionコメントを使用して失効します.
解決:
1,controllerでtry{}catchを使って異常を捕捉する
2,service実現に@Transationコメントを使う
制御装置
   @RequestMapping(value = "/add",method = RequestMethod.POST)
    @ResponseBody
    public Result add(HttpServletRequest request, @RequestBody User user){
        Result result = new Result();
        try{
            result = service.insert(user);
        }catch (Exception e){
            logger.error("  ", e);
        }
        return result;
    }
サービス: 
@Transaction(rollbackFor=Exception.class)設定に何か異常があったら、デフォルトでは、springはuncheckedに異常なことを繰り返す;checked異常であればロールバックしません.
 
java      Error  RuntimeException(     ,1/0)     unchecked  ,
     java.lang.Exception      Checked Exception, IOException、TimeoutException 
 
   @Override
    @Transactional(rollbackFor = Exception.class)
    public Result insert(User user){
        Result result = new Result();int result = userMapper.insert(user);return result;
    }
まとめ:異常捕獲はControllerで行い、Service層の中で@Transactionは異常が発生した時に正常にロールバック操作ができます.
 
参考:  https://blog.csdn.net/flyaway86/article/details/81181346
転載先:https://www.cnblogs.com/gczmn/p/10405100.html