两表关联,更新其中一表数据时,使用mybatis中的LambdaQueryWrapper中的updateById,updateBatch无法更新问题,需要使用updatewrapper

      在使用一个表中的id,来更新另一个表所关联的数据中的某个属性置为null,在进行updateBatch更新时候会直接删掉该属性值,是无法达到置空操作的,updateById同样也是。
      解决方法:可以把其字段值设为0,或者使用LambdaUpdateWrapper
public CommonResult<Boolean> updateSimpleSingleInstrumentsByCenterId(Long id) {

   LambdaQueryWrapper<SingleInstrumentDO> wrapper = new LambdaQueryWrapper<>();
   //根据中心id,查询该中心下的仪器信息
      wrapper.eq(SingleInstrumentDO::getInstrBelongsId, id);

       List<SingleInstrumentDO> singleInstrumentDOS = singleInstrumentMapper.selectList(wrapper);

          //定义一个list,存放更改后的仪器信息
      List<SingleInstrumentDO> singleInstrumentDOS1 = new ArrayList<>();
     singleInstrumentDOS.forEach(singleInstrumentDO -> {
         //这样置空更新时会把这两个字段值删掉
           //singleInstrumentDO.setInstrBelongsId(null);
           //singleInstrumentDO.setInstrBelongsType(null);
         //可以置为0,再进行操作
           singleInstrumentDO.setInstrBelongsId(0l);
           singleInstrumentDO.setInstrBelongsType(0);
      singleInstrumentDOS1.add(singleInstrumentDO);

    });
   singleInstrumentMapper.updateBatch(singleInstrumentDOS1);
    return success(true);
}
   public CommonResult<Boolean> updateSimpleSingleInstrumentsByCenterId(Long id) {

        //把仪器中心中的资源载体id置为空
          LambdaUpdateWrapper<SingleInstrumentDO> updateWrapper = new LambdaUpdateWrapper<>();
          updateWrapper.eq(SingleInstrumentDO::getInstrBelongsId,id);
          updateWrapper.set(SingleInstrumentDO::getInstrBelongsId,null);
          updateWrapper.set(SingleInstrumentDO::getInstrBelongsType,null);
          singleInstrumentMapper.update(updateWrapper);

        return success(true);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值