Mybatisplus 使用updateBatchById()方法无法更新为null的字段_Atm猿的博客-程序员秘密

技术标签: java  mybatis  SpringBoot  mybatis-plus  

一、问题:

    今天在开发中遇见一个问题就是当我使用mybatisplus的updateBatchById方法时,我将表的某一个属性值赋null,然后调用updateBatchById方法,返回true,去数据库一查数据,却发现数据还是原来的值。

二、原因:

   该问题其实是MyBatis-Plus对字段的验证策略导致的,MyBatis-Plus默认进行了不是全量更新的策略,如果对某字段赋值为null了,那么updateBatchById()更新时自动忽略该字段。

三、解决

     通过上网查询并结合自己项目实际情况,解决方法就是通过注解来去掉忽略,但是由于MyBatis-Plus版本更新,因此不同版本使用的注解形式不同。

  3.1.2版本之前使用: @TableField(strategy = FieldStrategy.IGNORED)

  3.1.2版本后使用:@TableField(updateStrategy = FieldStrategy.IGNORED)

   @TableField(updateStrategy = FieldStrategy.IGNORED)

    private String packageId;

四、扩展

    看网上资料说3.1.2版本之前使用: @TableField(strategy = FieldStrategy.IGNORED) 的时候需要注意一下问题:如果你的代码中,有某些方法只需要更改一两个字段,并且这些字段不包括你加了注解的这个字段的话,一定要先查询一遍你的这条数据,在这个实体上更新你的数据,不然你加了注解的字段会因为你没有赋值就给你置空了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39539346/article/details/108983487

智能推荐

Struts 2原理概述_strtuts2的原理_Mr.无言的博客-程序员秘密

一.Struts 2原理Struts2是在Struts1的基础上发展而来的,Struts是WebWork和Struts1的集合,采用的正是WebWork的核心,更多的是WebWork。上图来源于Struts2官方站点,是Struts 2 的整体结构。1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做A...

Linux 安装log.io实现浏览器实时显示服务端日志_linux离线安装log.io__汤小白的博客-程序员秘密

使用需求:因部分同事没有堡垒机服务器权限,但又需要看服务器日志,故使用此方法来实现一、安装安装前,需要先安装依赖包:1、npm、node:yum install -y npm nodejsgcc、g++:yum -y install gcc+ gcc-c++make:yum install make注:当时遇到坑,缺少gcc所以安装log.io时一直报错2...

apk生成odex方法以及odex合并apk方法_android 生成odex文件方法_wyymaomi的博客-程序员秘密

一、APK生成 odex文件方法:编译开源GIT上的build/tools /dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤将dexopt-wrapper放到/data/local目录中,使用adb shell执行linux命令行,使用cd命令进入/data/local目录,cd /data/local./dexopt-wra

安装和配置SpringSource Tool Suite_springsource tool suite workspace configuration 4._Jonia917的博客-程序员秘密

下载          网址:http://spring.io/tools/sts/all安装(Windows) 解压到C盘根目录下,形成目录c:\springsource 修改STS.ini 使用文本编辑器打开D:\springsource\sts-2.6.1.RELEASE\STS.ini,在该文件的开始加入如下2行: -vm c:/jdk1

android订单支付倒计时,Android中微信小程序支付倒计时功能_徐翊人的博客-程序员秘密

看效果由于web 经验弱爆- - 一开始我的思路是找事件,但是看了半天API 基本都是点击触摸,通过物理触发- -我居然忽略了生命周期,生命周期+线程不就完全OK吗~事实证明,线程还是王道啊,一开始就应该这么搞嘛~度娘上面也看了很多都是用js写的,but,可能刚做没几天吧,我对js与微信小程序掌握还不够熟练思路:onLoad:function(options)调用倒计时方法函数定义线程进行数据动...

( 保证能看懂系列)SVM系列(一)hard-margin SVM 详细原理_hard margin svm_Lee_Yu_Rui的博客-程序员秘密

感谢youtube上的视频对SVM的详细推导https://www.youtube.com/watch?v=ZF2QR7nSUhg&list=PLOxMGJ_8X74Z1N3OcacUaCxiXaGNHtFw2本文先对硬间隔的SVM进行详细的理论推导,支持向量机的基本思想其实是很简单的,但这个数学过程是真的有点复杂,尤其后面的SMO,别担心,本文没有,因为我也不知道到底咋写...对这个算法还不是特别熟悉,有问题请帮忙指出。三种形式SVM针对不同的分类问题,有以下三种形式的SVM(

随便推点

人工智能语音如何实现?_人工智能说话_luobogen666的博客-程序员秘密

语音识别是以语音为研究对象,通过语音信号处理和模式识别让机器自动识别和理解人类口述的语言。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别是一门涉及面很广的交叉学科,它与声学、语音学、语言学、信息理论、模式识别理论以及神经生物学等学科都有非常密切的关系。语音识别技术正逐步成为计算机信息处理技术中的关键技术,语音技术的应用已经成为一个具有竞争性的新兴高技术产

我使用过的Linux命令之du - 查看文件的磁盘空间占用情况_codingstandards的博客-程序员秘密

我使用过的Linux命令之du - 查看文件的磁盘空间占用情况本文链接:http://codingstandards.iteye.com/blog/786427   (转载请注明出处)用途说明du命令是用来查看磁盘空间占用情况的,在Linux系统维护时常会用到,并且通常与df命令搭配使用。首先使用df看一下各个磁盘分区的占用情况,如果某个分区的占用超过一定百分比(比如80%),就...

基于Matlab系统的HVDC系统_fpga和matlab的博客-程序员秘密

1.1 高压直流输电的课题背景 随着经济和电力技术的发展,现代电力系统已经发展的非常庞大和复杂。电力系统的不断发展对电能的灵活调节不停提出新的更高要求,与此同时高性能的调节手段又给电力系统中电能的生产、输送和应用带来了十分积极的变化。高压直流输电技术就是产生于这种背景之下。 高压直流输电相对于交流输电具有输送容量大、成本低、损耗小、输送距离远等优点。而且,高压直流输电没有高压交流输电的稳定性问题,更有利于大容量远距离输电。而且因为高压直流输电的经济性,适合两个不同频率的系统互联,能够...

tf.nn.in_top_k()-解析,以及不适用范围_Tina姐的博客-程序员秘密

1.in_top_k(predictions, targets, k, name=None)Args: predictions: 一种tf.float的张量。一个batch_size的x类张量。预测值,one-hot编码,size为[batch_size,label类别数]如在cifar10的分类上为[128,10]targets: 一个张量。必须是下列类型之一:int32, int64。size...

移动端海水技术实现-姜雪伟-专题视频课程_海洋_的博客-程序员秘密

该课程主要是针对移动端海水算法的编码实现,实现了海水的反射与折射,以及风力和浮力实现。

Maven入门教程(一)_weixin_30472035的博客-程序员秘密

1.Maven的简介1.1 什么是maven是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的。Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在...

推荐文章

热门文章

相关标签