大多数编程者习惯会在service层加事务控制,当一个controller层调用了多个service的update或者insert方法时,第一个成功了,第二个失败了。那么就会有第一个的事务会回退吗的困惑。其实通过在方法上@Transactional注解就可以控制。但在controller中不要使用try catch被捕捉了就不会回退事务。反正自己动手试试就知道。 但面向很多业务时还是建议放在service再做层封装
controller
//可行 @PostMapping("/updateCustTel") @Transactional public BctResponse updateCustTel(@RequestBody BctRequestreqBctRequest) throws Exception{ log.info("UpdatePersonInfoController.updateCustTel-------->start"); boolean flag = userInfoService.updateBySelective(userInfo);//success userInfoService.insert(new UserInfo()); //fail log.info("UpdatePersonInfoController.updateCustTel-------->end"); return BctResponse.success(); } //不可行 @PostMapping("/updateCustTel") @Transactional public BctResponse updateCustTel(@RequestBody BctRequest reqBctRequest) throws Exception{ log.info("UpdatePersonInfoController.updateCustTel-------->start"); try{ boolean flag = userInfoService.updateBySelective(userInfo);//success userInfoService.insert(new UserInfo()); //fail log.info("UpdatePersonInfoController.updateCustTel-------->end"); }catch(Execption e){ e.getMessage() } return BctResponse.success(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)