SpringBoot2.0 项目中使用事务
参考博客:
另外注意手动回滚事务需要
(1)在业务层方法上添加注解 @Transactional
(2)在需要回滚的地方添加代码:
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
示例:
@Transactional public ResultBuilder userUpdate(JSONObject jsonObject) { try { UserInfo userInfo = new UserInfo(); int count = userInfoMapper.updateUserInfo(userInfo); if (count != 1){ logger.error("[userUpdate] updateUserInfo is fail"); return new ResultBuilder(StatusCode.FAIL); } //修改密码的情况下进行Redis中token清除 if (!StringUtils.isEmpty(password)){ try { redisTemplate.delete(Constants.TOKEN_REDIS_KEY_PRE + userId); }catch (Exception ex){ logger.error("[userUpdate] redis delete key exception", ex); //手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); throw ex; } } return new ResultBuilder(StatusCode.SUCCESS); }catch (Exception e){ logger.error("[userUpdate] error", e); return new ResultBuilder(StatusCode.FAIL); } }