mybatis update和事务

1.修改的时候不仅要按id修改 ,还有加上查询时候的update的时间,不然就是一条脏数据。

 @Override
    public Integer updateTVarBasic(TVarBasic tVarBasic) {
        //多条件查询


        Example example =new Example(TVarBasic.class);
        Example.Criteria criteria= example.createCriteria();
        //加上id条件
        criteria.andEqualTo("id",tVarBasic.getId());
        Date dt = tVarBasic.getUpdateTime();
        //加上update条件
        criteria.andEqualTo("updateTime",dt);
        //set 当前时间
        tVarBasic.setUpdateTime(new Date());
        int t =  tVarBasicMapper.updateByExampleSelective(tVarBasic,example);
        if(t > 0){
            redisCacheService.delete(Constant.REDIS_CONSOLE_VAR_BASIC_ALL);
        }
        return t;
    }

2.一对多修改以及事务:
加上@Transactional(rollbackFor = Exception.class)注解,如果sql出错 事务内的sql会全部回滚。

/**
     * 修改衍生变量
     *
     * @param tVarDerive
     * @param erros
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    @PutMapping
    public Result updateVarDerive(@Valid @RequestBody TVarDerive tVarDerive, BindingResult erros) {
        log.info("tVarDerive:{}" + tVarDerive);
        int deriveIsUse = iVarDeriveService.getDeriveIsUse(tVarDerive.getId());
        if (deriveIsUse > 0) {
        //已经被使用 不能删除
            return ResultUtil.error(ResultEnum.DERIVE_ALREADY_USE);
        }
        //修改1表
        int isSuccess = iVarDeriveService.updateTVarDerive(tVarDerive);
        if (isSuccess > 0) {
            List<TVarDeriveFactor> lst = iVarDeriveFactorService.selectFactorByDeriveId(tVarDerive.getId());
            for (TVarDeriveFactor deleteDeriveFactor : lst) {
             //删除多的一方的所有数据
                iVarDeriveFactorService.deleteVarDeriveFactory(deleteDeriveFactor.getId());
            }
            for (TVarDeriveFactor tVarDeriveFactor : tVarDerive.gettVarDeriveFactors()) {
                TVarDeriveFactor deriveFactor = new TVarDeriveFactor();
                //BeanUtils 是org.springframework.beans.BeanUtils下的
                //把左边对象的内容复制到右边对象中去
                BeanUtils.copyProperties(tVarDeriveFactor, deriveFactor);
                deriveFactor.setCreateTime(new Date());
                deriveFactor.setUpdateTime(new Date());
                //然后新增 相当于是修改
                iVarDeriveFactorService.insertVarDerive(deriveFactor);
            }
        } else {
            return ResultUtil.error(ResultEnum.UPDATE_ERROE);
        }
        return ResultUtil.success();
    }

猜你喜欢

转载自blog.csdn.net/qq_41799291/article/details/88919608
今日推荐