网站内容更新策略(关于Mybatis-PlusUpdate更新策略问题更新(-Plus))

优采云 发布时间: 2022-02-17 10:39

  网站内容更新策略(关于Mybatis-PlusUpdate更新策略问题更新(-Plus))

  关于Mybatis-PlusUpdate更新策略

  更新时间:2021-11-26 14:38:44 作者:真适合睡觉的天气

  本文章主要介绍Mybatis-PlusUpdate的更新策略,有很好的参考价值,希望对大家有所帮助。如果有错误或没有考虑完整,请告诉我

  内容

  问题

  

  之前一直在用Mybatis,最近尝试用Mybatis-Plus,但是updateById登录成功后更新最新登录时间出现问题。一般业务操作是更新不为空的字段,结果发现所有字段都更新了(还是有这样的问题)

  Mybatis-Plus 版本:

  

  原因

  mybatis-plus FieldStrategy 有三种策略:

  默认更新策略为NOT_NULL:非NULL;即通过接口更新数据时,当值为NULL时,数据不会更新到数据库中。

  我在yml中没有配置这个参数,所以我的配置是默认策略是NOT_NULL,也就是说如果参数是空字符串,会更新保存

  官方链接:

  官方的解释是

  更新策略

  现场验证策略更新

  操作说明:

  更新期间的字段验证策略目前没有默认值。当 {@link #fieldStrategy} 完全删除时,将给出默认值 NOT_NULL。如果不匹配,请关注 {@link #fieldStrategy}。

  选择策略(因为 3.1.2)

  现场验证策略选择

  操作说明:

  选择时的字段验证策略:wrapper基于内部实体生成的where条件目前没有默认值。当 {@link #fieldStrategy} 被完全删除时,它会给出一个默认值 NOT_NULL。如果不匹配,请按 {@link #fieldStrategy} 作为允许

  解决方案

  经过搜索,有三种解决方案

  1、给指定字段添加注解

  在需要其他策略的字段中设置忽略策略

  

@TableField(strategy=FieldStrategy.NOT_EMPTY)

  

  2、全局配置

  添加 application.properties 或 application.yml 配置文件

  

# yml配置

mybatis-plus:

global-config:

db-config:

field-strategy: not_empty

# properties配置

mybatis-plus.global-config.db-config.field-strategy=not_empty

  3、使用 UpdateWrapper 更新

  将 updateById 替换为 UpdateWrapper

  

  您可以选择以上三种方法之一

  mybatisplus更新遇到的坑

  前端传递的字段值为null,mybatisplus默认不会修改字段值。

  添加注释:

  

@TableField(updateStrategy = FieldStrategy.IGNORED)

  结果mybatisplus默认将null转为空字符,实体类对象如下:

  

  数据库字段修改结果如下:

  

  以上是我的个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线