一,前言,最近使用刚使用了下?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);
}
完
|