今天遇到了一个问题,在更新数据时,MybatisPlus不会进行修改属性为空的数据表字段。

解决办法:

只需要在实体类的属性上加一行注释即可

/**
* 姓名
*/
@TableField(fill = FieldFill.UPDATE)
private String name;

这行注释的意思是:在name这个属性执行修改时,将自动填充一个值(默认为null),即将字段修改为空,而不是不做修改。

比较老的解决方式:

在用mybatis-plus封装的updateById方法来更新数据时,想把一个字段设置为null值,但是发现更新后数据没有为null还是原来的值,这是因为mybatis-plus在更新的时候做了null判断,默认不更新为null的传参。

2 解决方法
在实体类对应的字段上加注解@TableField(strategy=FieldStrategy.IGNORED),忽略null值的判断,例如

@TableField(strategy = FieldStrategy.IGNORED)
private String name;
当@TableField注解有多个值时

@TableField(value = "user_name", strategy = FieldStrategy.IGNORED)
private String userName;

解决MybatisPlus修改时空字段不修改问题的更多相关文章

  1. sql修改一个字段多个值

    UPDATE 表名 SET 修改的字段=REPLACE(修改的字段,'修改的值','新值');

  2. 数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、

    数据源.数据集.同步任务.数据仓库.元数据.数据目录.主题.来源系统.标签. 增量识别字段.修改同步.ES索引.HBase列族.元数据同步.DS.ODS.DW.DM.zk集群地址 == 数据源 数据源 ...

  3. 【sql技巧】mysql修改时,动态指定要修改的字段 update `table` set (case when ....) = 1 where id = xx

    如果你点进了这篇帖子,那么你一定遇到了跟我一样的问题.别看题目的set case when...,我一开始也是第一反应是用case when但是发现并不好使. 问题呢,说得高大上一点:动态指定要修改的 ...

  4. 「SAP 技术」SAP MM 物料主数据利润中心字段之修改

    SAP MM 物料主数据利润中心字段之修改 近日,收到业务部门报的一个问题,说是MM02去修改物料的利润中心字段值,系统报错说物料库存存在,不让修改. 笔者查询了该物料的库存,当期库存并不存在.MMB ...

  5. 利用Entity Framework修改指定字段中的值

    利用Entity Framework修改指定字段中的值一般我们编辑某些模型的时候会用到类似这样的代码: [HttpPost] public ActionResult Edit(Article mode ...

  6. flask修改数据库字段的类型和长度

    flask修改数据库字段的类型和长度 ​ 在将models中的字段的db.String(256)修改为db.String(1024)后,执行migrate和upgrade操作后,发现数据库并没有更新, ...

  7. SqlServer用sql对表名、字段做修改

    1.重命名表  下例将表 users重命名为 userdd.  EXEC sp_rename 'users', 'userdd'  2. 重命名列  下例将表 userdd中的列 sex 重命名为 s ...

  8. MySql增加字段、删除字段、修改字段名称、修改字段类型

    1.增加一个字段 alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空 alter table user a ...

  9. SQL Server 不清空数据,修改数据库字段、结构,阻止保存要求重新创建表的更改

    当数据库有数据修改数据库字段时,默认是阻止的! 工具---选项---设计器---阻止保存要求重新创建表的更改(取消钩)

随机推荐

  1. 初学Python常见异常错误,总有一处你会遇到!

    初学Python常见错误 忘记写冒号 误用= 错误 缩紧 变量没有定义 中英文输入法导致的错误 不同数据类型的拼接 索引位置问题 使用字典中不存在的键 忘了括号 漏传参数 缺失依赖库 使用了pytho ...

  2. String字符串是不变对象,内容一旦创建不可改变,若改变一定会创建新对象

    package seday01;/** * 字符串是不变对象,内容一旦创建不可改变,若改变一定会创建新对象* @author xingsir */public class StringDemo { p ...

  3. Windows Store可以下载安装Windows Terminal (Preview)

    Windows Terminal (Preview)已经可以在Windows Store下载安装. Windows Terminal (Preview)运行要求为: Windows 10 版本 183 ...

  4. js中的作用域

    作用域:      域:空间.范围.区域…… 作用:读.写 浏览器:“JS解析器” 1)“找一些东西” :var  function 参数 a = ...未定义所有的变量,在正式运行代码之前,都提前 ...

  5. LayoutSubviews的调用

    1.当view被添加到另一个view上时调用 2.布局子控件时调用 3.屏幕旋转的时候调用 4.当view的尺寸大小改变的时候调用

  6. Qt开源编辑器qsciscintilla的一些用法

    首先放一张自己做的软件中的编辑器的效果图 中间红色的框就是放在Qt的tabwidget控件中的qsciscintilla编辑器 先从官网下载qsciscintilla源码,在qtcreater中编译, ...

  7. springboot-配置多个数据源

    1.创建一个datasource包,新建DataSource1,DataSource2两个文件,通过注解来配置数据源 DataSource1: package com.springboot.datas ...

  8. 用linux编译并运行c文件

    目录 创建一个.c文件 写完代码以后进行编译 @(用linux编译并运行c文件) 创建一个.c文件 vi 文件名.c 对于图形化的linux,需要右键桌面,在终端中打开,输入vi 文件名.c就创建了一 ...

  9. Visual Studio Code 配置 EasyLESS,如果想用less,但又不想在组件中直接添加 style 时可以参考

    在用 vue 画页面时,如果想用less,但又不想在组件中直接添加 style ,可以使用 vs code 的插件:EasyLess EasyLess 安装好后必须在 setting.json 中对它 ...

  10. linux 安装PostgreSQL12

    一.安装步骤 1.设置保存安装包的目录 # cd /usr/local/src 2.开始下载源包 # wget https://ftp.postgresql.org/pub/source/v12.1/ ...