一、简介

因为最近在忙项目,好久都没有更新博客,最近在项目中刚好遇到一个问题,就是在使用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 

三、解决方法

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

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

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

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

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

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

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

四、总结

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

MyBatis-Plus updateById方法更新不了空字符串/null解决方法相关推荐

  1. linux如何判断数组是否为空,Linux fgetcsv取得的数组元素为空字符串的解决方法

    Linux fgetcsv取得的数组元素为空字符串的解决方法 但服务器上,很多使用Linux服务器,源程序使用UTF-8,这样很容易产生字符编码的问题. 如果仅仅将CSV文件转码为UTF-8,这样在W ...

  2. Win8.1无法安装更新,提示0x800*****错误的解决方法

    Win8.1无法安装更新,提示0x800*****错误的解决方法 参考文章: (1)Win8.1无法安装更新,提示0x800*****错误的解决方法 (2)https://www.cnblogs.co ...

  3. 织梦最新版后台一键更新网站、更新文档HTML卡死的解决方法

    织梦最新版后台一键更新网站.更新文档HTML卡死的解决方法 参考文章: (1)织梦最新版后台一键更新网站.更新文档HTML卡死的解决方法 (2)https://www.cnblogs.com/dede ...

  4. w10计算机运行特别卡,win10更新后很卡怎么办_win10更新后电脑特别卡的解决方法...

    最近有朋友问小编win10更新后很卡怎么办,对于这个问题,相信很多朋友都遇到过.Win10系统是目前市面上主流的操作系统,很多朋友都要在使用windows10系统,但是有些朋友在更新完win10后发现 ...

  5. 计算机上安装了更新ie版本,电脑XP系统安装不了ie提示“安装了更新的Internet Explorer版本”的解决方法...

    其实IE是一款功能非常强大的浏览器,其具有非常强大的用户群体.不过,最近有用户在xp系统电脑上安装Internet Exployer浏览器时,遇到提示"安装程序无法继续,因为你的计算机上安装 ...

  6. 0x800700c1添加语言,Win10更新失败出现”0x800700C1“错误的解决方法

    [文章导读]Win10系统是目前微软最新的一款操作系统,由于是比较新的一个系统版本,所以微软在这个系统上也花了不少心思,对于系统的优化甚是看重,使用过win10的用户大致都能感觉得到基本上系统每一个月 ...

  7. w7系统出现无法更新服务器,win7系统自动更新选项不能用了的解决方法

    win7系统自动更新选项不能用了的解决方法? 我们在操作win7系统电脑的时候,常常会遇到win7系统自动更新选项不能用了的问题.那么出现win7系统自动更新选项不能用了的问题该怎么解决呢?很多对电脑 ...

  8. 绝地求生信号服务器崩溃,绝地求生游戏崩溃怎么办?更新显示servers are too busy解决方法...

    绝地求生4.19更新内容 绝地求生游戏崩溃怎么办?更新显示servers are too busy解决方法来看看绝地求生4.19更新到什么时候?更新提示Servers are too busy怎么办的 ...

  9. 服务器2012系统更新后蓝屏怎么删除更新,win10更新补丁后蓝屏怎么删?win10更新补丁后蓝屏的解决方法...

    电脑蓝屏是比较普遍的故障,很多使用win10系统的用户都遇到过这种问题.那win10更新补丁后蓝屏怎么删呢?有的网友就有这样的疑问,所以接下来小编为大家整理的就是关于win10更新补丁后蓝屏的解决方法 ...

  10. mybatis WARN No appenders could be found for logger的解决方法

    mybatis WARN No appenders could be found for logger的解决方法 参考文章: (1)mybatis WARN No appenders could be ...

最新文章

  1. [转] ASP.NET MVC3 路由和多数据集的返回
  2. c+和python先学哪个比较好-【编程先学什么好,c还是python】python教程c
  3. 5.1 实验五 四则运算单元测试
  4. 关于jstl动态变量用法
  5. 【数据结构与算法】之深入解析“石子游戏IV”的求解思路与算法示例
  6. svn钩子程序上传文件中文文件导致报错的处理办法
  7. Java死锁故障排除和解决
  8. FreeRTOS中断配置与临界段
  9. c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#
  10. 基于Blink构建亲听项目以及全链路debug项目实时响应能力 1
  11. 如何在bootstrap轮播中调整图像大小
  12. java web 编程技术 pdf_Java WEB编程技术.pdf
  13. 教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!
  14. McAfee迈克菲最新杀毒防火墙软件安装McAfeeEndpointSecurity10.6.1 百度云下载
  15. 【python实战】二:乒乓球比赛对手问题
  16. 往事不回头,今后不将就~~Fighting
  17. 【日记 2021-05-14】树莓派获取环境亮度(光照度)
  18. Java8-使用stream.sorted()对List排序
  19. Paragraph 对象'代表所选内容、范围或文档中的一个段落。Paragraph 对象是 Paragraphs 集合的一个成员。Paragraphs 集合包含所选内容、范围或文档中的所有段落。...
  20. 曹政--互联网搜索老师傅

热门文章

  1. 解决XCode 11 build error 编译错误 image not found
  2. 2020 Kyligence 面经
  3. css 背景图 左右空白,缩小窗口时CSS背景图出现右侧空白BUG的解决方法
  4. 用傅里叶分析得到频域信息 MATLAB,信号频谱分析
  5. 最新最全latex在sublime上的配置步骤全解
  6. 【Gym-101775 J】Straight Master【差分、贪心】
  7. 【POJ 2279】Mr. Young’s Picture Permutations【线性DP】
  8. 大学物理实验习题+答案/缓慢更新
  9. 225.队列实现栈 (力扣leetcode) 博主可答疑该问题
  10. nginx中的的ip_hash机制