开发者

Mybatis saveAndUpdate空值不更新问题及解决

开发者 https://www.devze.com 2023-02-08 10:52 出处:网络 作者: 专注,简单
目录MyBATis saveAndUpdate空值不更新Mybatis使用update更新值为null时不生效出现的问题原因解决方法总结Mybatis saveAndUpdate空值不更新
目录
  • MyBATis saveAndUpdate空值不更新
  • Mybatis使用update更新值为null时不生效
    • 出现的问题
    • 原因
    • 解决方法
  • 总结

    Mybatis saveAndUpdate空值不更新

    @TableField注解有三种更新策略

    public enum FieldStrategy {
      IGNORED,//参数为空也更新到数据库
      NO开发者_JAVA学习T_NULL,//参数不能为null
      NOT_EMPTY;//参数不能为空
    
      private FieldStrategy() {
      }
    }

    如下,如果想要name字段为空或者null时也更新数据库数据,注解上加 strategy = FieldStrate编程客栈gy.IGNORED

    @TableField(strategy = FieldStratepythongy.IGNORED,value="name")
      private String name;

    Mybatis使用update更新值为null时不生效

    纯属记录使用过程中遇到的问题更新null值没有生编程客栈效的问题解决办法,内容较为简单。

    出现的问题

    前端修改数据时把属性内容删除然后进行保存,www.devze.com默认传的null,后端更新时属性值为null,然后调用updateById进行更新时发现该属性还是原来的值:

    name:"tt";
     
    //前端页面把该属性内容进行删除传给我后端
    {
    name: null
    }
     
    //后端接收到的
    name: null
     
    //使用该方法进行更新
    updateById();
     
    //结果name还是等于更新前的值
    name: "tt";

    后面百度发现该update方法不会对属性null的进行更新

    原因

    mybatis-plus FieldStrategy 有三种策略:

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

    默认非空,所有更新时不生效的问题

    解决方法

    设置全局的field-strategy 

    Mybatis saveAndUpdate空值不更新问题及解决

    这样全局配置会把所有的属性都忽略,对于一些不需要改的属性可能会影响业务的准确性。

    ②给单独的属性设置field-strategy

    根据实际应用情况对某些属性增加该注解来忽略策略

    @TableField(strategy=FieldStrategy.IGNORED)

    Mybatis saveAndUpdate空值不更新问题及解决

    这样增加该android注解的属性就可以使用updateById()方法进行更新null值。

    ------当然还有其他的好的方法也可以去参考

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号