当前位置: 首页 > 编程笔记 >

详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法

宇文兴言
2023-03-14
本文向大家介绍详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法,包括了详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法的使用技巧和注意事项,需要的朋友参考一下

最近遇到了Mybatis-Plus updateById(),更新某一个字段为null,却发现没有更新成功,发现有一个博客记录挺好的。转载过来,方便自己看。

一、简介

因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用MyBatis-Plus updateById(xxx)的时候,居然更新不了字符串或者null,本文分享两种解决方案,具体大家可以根据自己的需求选择一种方法解决。

二、原理

在实际项目中,难免更新的时候,有可能会把已有的值更新成空字符串或者null,但是当你使用updateById()方法的时候,会发现根本不生效。这其实是MyBatis-Plus对字段的验证策略导致的,MyBatis-Plus默认进行了不是全量更新的策略,查阅官网发现有一个属性:因为笔者使用的是springboot,下面是mybatis-plus配置文件:

 mybatis-plus:
   global-config:
    #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
    field-strategy: 1

这个字段验证策略默认是1, 即NOT NULL,更新的时候做了null判断,默认不更新为null的传参。

field-strategy字段更新插入策略属性说明:

  • IGNORED(0): "忽略判断", 所有字段都更新和插入
  • NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL值
  • NOT_EMPTY(2): "非空判断", 只更新和插入非NULL值且非空字符串
  • DEFAULT:默认NOT_NULL

field-strategy字段更新插入策略属性说明:

  • IGNORED(0): "忽略判断", 所有字段都更新和插入
  • NOT_NULL(1): "非 NULL 判断", 只更新和插入非NULL值
  • NOT_EMPTY(2): "非空判断", 只更新和插入非NULL值且非空字符串
  • DEFAULT:默认NOT_NULL

三、解决方法

【第一种方法】:全局配置方式

在MyBatis-Plus配置文件中修改field-strategy字段验证的值为0,即忽略判断。

记住,光设置这个是不会进行判断了,但是你会发现更新插入操作的时候还是会报错,会报jdbcType不允许为空,这个时候,你需要确保你的PO对象(即@TableField(value="XSID")修饰字段的时候,还需要加入el属性,每个属性对应数据库的jdbcType类型,这样才能成功更新空值或null。如下图:

【第二种方法】:如果你设置的字段验证策略为非null判断

这个时候你会发现可以更新空字符串' ',但是一些比如Date等html" target="_blank">对象类型的设置空是要设置为null的,你会发现一样更新不了null,

由于表中的字段基本上都是varchar字符类型的,所以这个时候可以在PO中对类型为对象类型的属性通过注解对对象类型的属性单独设置字段验证策略为IGNORED如下图:

这样就可以成功更新值为null或者空字符串' '了,问题解决。

四、总结

以上是笔者在实际项目中遇到mybatis-plus更新操作不生效的问题总结以及解决方案,读者可以根据具体需求选择适合自己的一种解决方法,希望能对大家有所帮助。

到此这篇关于详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法的文章就介绍到这了,更多相关MyBatis-Plus updateById空字符串内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍Json_decode 解析json字符串为NULL的解决方法(必看),包括了Json_decode 解析json字符串为NULL的解决方法(必看)的使用技巧和注意事项,需要的朋友参考一下 从APP端或从其他页面post,get过来的数据一般因为数组形式。因为数组形式不易传输,所以一般都会转json后再发送。本以为发送方json_encode(),接收方json_decode(),就

  • 本文向大家介绍详解java生成json字符串的方法,包括了详解java生成json字符串的方法的使用技巧和注意事项,需要的朋友参考一下 例1:将map对象添加一次元素(包括字符串对、数组),转换成json对象一次。 代码: 运行结果: (需要用到的包可在官网下载:http://www.json.org/java/index.html) 例2:list转换成json的三种参数形式。 运行结果: 例3

  • 本文向大家介绍java json不生成null或者空字符串属性(详解),包括了java json不生成null或者空字符串属性(详解)的使用技巧和注意事项,需要的朋友参考一下 大家平时用java对象转json字符串。null或者空字符串属性是不需要生成到json字符串里面的。 如下方式生成,没有使用的属性也会生成json字符串属性。 Gson使用: 如果大数据传输,或者存储到数据库,合理生成jso

  • 本文向大家介绍JavaScript实现反转字符串的方法详解,包括了JavaScript实现反转字符串的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现反转字符串的方法。分享给大家供大家参考,具体如下: 下面对例子中使用到的 JS 方法进行说明: 1、join():返回字符串值,其中包含了连接到一起的数组的所有元素,元素由指定的分隔符分隔开来。 格式:arra

  • 本文向大家介绍python字符串反转的四种方法详解,包括了python字符串反转的四种方法详解的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、用reduce函数方法 2、字符串切割 3、用reversed方法,把字符串变成列表反转后拼接 4、for循环

  • 本文向大家介绍Python字符串split及rsplit方法原理详解,包括了Python字符串split及rsplit方法原理详解的使用技巧和注意事项,需要的朋友参考一下 1.描述 split()方法通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个子字符串,默认分隔符为所有空字符,包括空格、换行(\n)、制表符(\t)等 rstrip()方法通过 2.语法 str.spl