美文网首页
mybatis更新操作中,如果有要更新为null的字段,调用up

mybatis更新操作中,如果有要更新为null的字段,调用up

作者: cmeizu | 来源:发表于2020-08-05 10:48 被阅读0次
  • 数据表的数据改变之前


    image.png
  • 如果直接传null值用用updateId的方法;

  • 入参:

{
  "age": 30,
  "id": 9,
  "name": null,
  "sex": "M"
}

更新代码

 //第一种调用更新方法
User user = new User();
BeanUtils.copyProperties(userDTO, user);
return userMapper.updateById(user);

执行后的结果


image.png
  • 可以看到name,字段改为numm,但是并没有更新.而age是更新了的.

另一种更新的方式.


        UpdateWrapper<User> uw = new UpdateWrapper<>();
        uw.lambda()
                .set(User::getAge, userDTO.getAge())
                .set(User::getName, userDTO.getName())
//这个很重要,是where条件,否则一张表就毁了.
                .eq(User::getId, userDTO.getId());
        return userMapper.update(null, uw);

再次执行查看结果

image.png

就能更新为null了.
另一种是在实体类上加上注解,不过不建议.

 /**
     * 用户姓名
     */
    @TableField(value = "name",updateStrategy = FieldStrategy.IGNORED)
    private String name;

这样用第一种方法也是可以的.前提都是这个字段可以为null.


image.png

相关文章

网友评论

      本文标题:mybatis更新操作中,如果有要更新为null的字段,调用up

      本文链接:https://www.haomeiwen.com/subject/ciiyrktx.html