mybatis-plus 中 updateById()方法 更新不了null、空字符串解决策

  • Post author:
  • Post category:其他


一,前言,最近使用刚使用了下 mybatis-plus,给笔者的最大感受是确实提高生产力,特别是许多针对单表的操作不再需要去自己手动去一步步写实现了,实乃居家旅行之必备良品。然而今天晚上下班的时候笔者乐栽乐哉地修复一个bug时发现,我明明更新了一条记录,随后再去看时数据又回来了。吓得我感觉揉了揉我1.5度的卡姿兰大眼珠子,方法确实没写错啊!还反复验证了2次。咳咳,貌似跑题了,切回正轨。这是由于mybatis-plus 对字段的验证策略导致的,mybatis-plus默认进行了不是全量更新的策略,即 :

mybatis-plus:
  global-config:
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 1

二,解决策,笔者使用的版本是 2021 版比较新的 3.4.2,官网已经做了简化只需要在实体类中加上对应注解即可。

<!-- mybatis-plus -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.4.2</version>
</dependency>
@ApiModelProperty(value = "昵称")
@TableField(value = "nickname", updateStrategy = FieldStrategy.IGNORED)
private String nickname;

三,测试,成功

@Test
public void testUpdateNull(){
   UserInfo userInfo = new UserInfo();
   userInfo.setId(7l);
   userInfo.setName("yaya");
   userInfo.setPassword("123456");
   userInfo.setNickname(null);
   int result = userInfoMapper.updateById(userInfo);
   System.out.println(result);
}



版权声明:本文为qq_25135655原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。