文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

当Mybatis-Plus更新的字段有空字符串或者 null

2024-04-02 19:55

关注

一、问题

在用mybatis-plus封装的updateById方法来更新数据时,想把一个原本有值的字段设置为null ,但是发现更新后数据没有为null 还是原来的值,这是因为mybatis-plus在更新的时候做了null 判断,不更新为null 的传参,这就是默认的空不更新策略。但是又要将某个字段更新为null,所以到底应该如何解决,本文记录了几种解决方法,以及对这几种方法的总结。

二、解决办法

FieldStrategy 有三种策略:
IGNORED:忽略
NOT_NULL:非 NULL,默认策略
NOT_EMPTY:非空
当用户有更新字段为空字符串或者 null 的需求时,需要对 FieldStrategy 策略进行调整
(1)方式一:调整全局的验证策略
注入配置 GlobalConfiguration 属性 fieldStrategy
(2)方式二:调整字段验证注解
根据具体情况,在需要更新的字段中调整验证注解,如:
image.png
(3)方式三:使用 UpdateWrapper (3.x)
使用以下方法来进行更新或插入操作:例如想对privilege表中某一id的父节点pid设置为null,这边一开始有个问题是,我把这段代码放在更新接口的靠前位置,因为有其他字段也要更新,所以更新下来,又变回原值,后来移到最后,也就是先设置其他值,这个需要设置空的字段最后更新,这样就防止该字段被覆盖值的情况了。
image.png

三、总结

方式一和方式二并不安全,有可能导致别人在调用更新方法的时候不小心就把你的某些字段置为null了。更推荐使用方式三。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯