随笔 - 322,  文章 - 0,  评论 - 10,  阅读 - 64301

 

插入或更新的字段有 空字符串 或者 null

FieldStrategy 有三种策略:

  • IGNORED:忽略
  • NOT_NULL:非 NULL,默认策略
  • NOT_EMPTY:非空

当用户有更新字段为 空字符串 或者 null 的需求时,需要对 FieldStrategy 策略进行调整:

 

方式一:调整全局的验证策略

注入配置 GlobalConfiguration 属性 fieldStrategy

 

application.yml

mybatis-plus:
  global-config:
      # 字段策略 0:忽略判断,直接拼SQL, 1:非NULL, 2:非空,3:默认;4:永远不加入SQL
    field-strategy: 0

注意

这是全局配置,会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null,可能会影响其他业务数据的正确性。 

所以,尽量不要用此法。

方式二:调整字段验证注解

根据具体情况,在需要更新的字段中调整验证注解,如验证非空:

@TableField(strategy=FieldStrategy.NOT_EMPTY)

默认的字段策略会忽略掉,所以我们可以将要设置为null 的字段的策略更改下.例如;

@TableField(strategy = FieldStrategy.IGNORED)
private LocalDateTime offlineTime;

这样再次调用updateById,就ok了
由于做了这个更改,可能后续会有其他人误操作此表的时候,真的将这个字段不知情的情况下置为了null,可能造成严重事故!!!

 

方式三:使用 UpdateWrapper (3.x)

使用以下方法来进行更新或插入操作:

LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(User::getOfflineTime,null); // 设置null
updateWrapper.set(User::getContent,null); // 设置null
updateWrapper.eq(User::getId,article.getId()); // 必须设置id,否则所有的数据都会被修改
userMapper.update(user, updateWrapper);

或者

userService.lambdaUpdate()
           .eq(User::getId, user.getId())
           .set(User::getUserName, user.getUserName())
           .set(User::getNickName, null)
           .update();    

 

 例子:根据Id主键更新User这个对象,其中email由前端传参,如果不传、空字符串或者传null,则更新该字段为null;

// 插入或更新的字段有 空字符串 或者 null
LambdaUpdateWrapper<User> wrapper = new LambdaUpdateWrapper<>();
// 设置更新的记录id,缺少这个会更新所有记录
wrapper.eq(User::getId, User.getId());
// 更新时字段值不传、为空字符串、为null可以更新
wrapper.set(User::getEmail, user.getEmail());
update(user,wrapper);

注:需要设置更新记录的id,否则会更新全部的记录;

 

posted on   java先生  阅读(400)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示