Mybatis-Plus的@Version注解:使用updateBatchById方法引发的问题

news2025/1/16 6:00:41

正常情况下,我们想要的是,当乐观锁不对的时候要一个反馈,例如:版本号不一致,请刷新页面重新获取数据。

在没有@Version注解的时候,一般我们会进行显示校验。例如下图:

在这里插入图片描述

updateById方法使用演示

有了@Version注解之后,可以直接使用updateById方法的返回值进行判断。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

可以看到当乐观锁不对的时候,updateById方法返回的是false。

在这里插入图片描述

获取到对应的SQL语句可以看到,在更新条件中添加上了修改后的version条件。

虽然这条语句是正常执行的,但是因为没有查到满足条件的数据,也就不会执行更新操作,updateById方法给返回了个false。

updateBatchById方法的问题

如果是使用的Mybatis-Plus框架的updateBatchById方法会有问题。

在这里插入图片描述
一开始是设想的跟updateById方法一样,当设置的乐观锁查不到数据进行更新的时候,会返回false,因此有了上面截图的控制。(注:这是个测试代码!)
在这里插入图片描述

目前数据库中的这三条数据乐观锁分别是7,5,7。

在这里插入图片描述
在批量修改的时候,换成了6,4,6。
在这里插入图片描述

可以看到响应结果是正常的,没有抛出异常。

在这里插入图片描述

现在这种的代码,在乐观锁不对的时候,updateBatchById返回的是true。

在这里插入图片描述
在这里插入图片描述

这里指的是sql语句是正常执行的,只不过没有匹配到对应的数据而进行更新操作。

在乐观锁不对的情况下,想要更新的数据不会被更新,也不会得到乐观锁不对的响应。

上述两个方法的比较

接着又写了一段测试代码。

在这里插入图片描述
在这里插入图片描述

可以注意到针对同一个数据,updateById方法和updateBatchById方法的返回值是不一样的。

在这里插入图片描述

来到updateBatchById方法中看了一下。

这个updateBatchById方法只要核心业务不报异常,就返回true,在使用@Version注解的时候会有一些问题。。。使用单条更新的updateById方法的返回值是没问题的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74376.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数商云SRM供应商系统售后模块解析 | 助力汽修企业打造高效SRM服务管理体系

随着我国汽车保有量的持续增长,汽车维修行业不断地向社会化方向发展,汽修行业从产品型的行业转变为服务型行业,成为一个社会化的、人才专业型、技术密集型的和相对独立的行业,发展势头迅猛,据统计,我国的汽…

跨主机访问——docker

当你有若干个容器之后,你可能就希望实现容器的跨机部署访问了,比如aspnetcore在一台host上,mysql在另外一个host上,如果要实现这样的功能,需要你 借助docker自带的overlay网络模型了。 一: overlay网络模型 要想快速的搭建overlay网络,你可以通过docker默认的swarm集群…

代码随想录Day45|70.爬楼梯(进阶)、322.零钱兑换、279.完全平方数

文章目录70.爬楼梯(进阶)322.零钱兑换279.完全平方数70.爬楼梯(进阶) 文章讲解:代码随想录 (programmercarl.com) 题目链接:programmercarl 题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼…

【C#基础学习】第十六章、枚举

目录 枚举 1.枚举的补充 1.1底层类型 1.2 设置显式值 1.3 枚举成员赋值顺序 2.位标志 2.1 Flags特性 枚举 枚举的定义: 枚举是由程序员自定义的值类型。它只有一种类型成员:命名的整数值常量。枚举成员都有一个底层类型的常量值。第一个枚举成员的…

【场景削减】拉丁超立方抽样方法场景削减(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Linux搭建RabbitMQ集群环境

文章目录环境说明Erlang安装下载安装包安装验证RabbitMQ安装下载安装包安装启动RabbitMQ设置开机自动启动安装管理界面创建用户登录管理界面集群配置前提条件构建erlang集群高可用镜像集群配置环境说明 操作系统:CentOS7Erlang版本:21.3RabbitMQ版本&am…

信而泰耦合测试-网络测试仪实操

一、耦合测试原理 1.产生背景​ 常用测试无线设备过程中,将无线设备置于屏蔽箱中,通过无线网卡连接并运行iperf等类似软件的方式检测所述无线设备的吞吐量。 相关技术中将所述无线设备置于所述屏蔽箱中的检测方法,由于所述屏蔽箱存在信号反…

【C语言】字符串函数(二)

目录 一、strncpy函数(字符串拷贝) 1、strncpy函数的用途 2、strncpy函数的使用 二、strncat函数(字符串追加) 1、strncat函数的用途 2、strncat函数的使用 三、strncmp函数(两个字符串比较) 1、strncmp函数的用途 2、strncmp函数的使用 四、strstr函数(查找字符串) 1、strstr函…

2022年底总结(被阿里捞的第1、2、3...次)

前言 自从去年因为个人原因没有去阿里淘系,后面有几次阿里同学问我有没有意向去阿里上班。其实我内心是很激动的,在人才库能被捞也是别人的认可,这个是值得骄傲的,然后需要继续保持自己专研技术的精神以及不断进步的意识。 当然博…

ChatGPT 大智近妖,从宇宙人生到手搓光刻机,从哄女友到写年终总结我们聊得非常开心,反而让人越来越忧心

文章目录宇宙人生问:你觉得人生的意义是什么?问:你觉得思维意识到底是什么问:我之前的两个问题大概有多少人问过你?问:宇宙的边界在哪里?手搓狠活怎么实现量子计算怎么制造一个光刻机怎么制作核…

多谐振荡器

三个非门首尾相接形成环,在理想情况下,无法形成振荡 门一定是存在传输延迟时间的,所以当高电平变成低电平的时候,必然会经过传输延迟时间 所以当反过来发生翻转的时候,经过了三倍的状态延迟时间 震荡的周期是六个传输…

基于SARIMA、XGBoost和CNN-LSTM的时间序列预测对比

利用统计测试和机器学习分析和预测太阳能发电的性能测试和对比 本文将讨论通过使用假设测试、特征工程、时间序列建模方法等从数据集中获得有形价值的技术。我还将解决不同时间序列模型的数据泄漏和数据准备等问题,并且对常见的三种时间序列预测进行对比测试。 介…

RNSScreenStackHeaderConfig“ was not found in the UIManager.解决办法!!亲测有效

Invariant Violation: requireNativeComponent: "RNSScreenStackHeaderConfig" was not found in the UIManager. 原因:RN项目中,开发服务器端已经使用npm i下载了某个模块,但是只有服务器端有,该模块并没有打包安装到手…

Cache与MMU的爱恨纠缠

首先声明本文不准备详细地介绍Cache和MMU的概念和用法,主要是为了厘清两者之间的相互关系和依赖。 1. MMU管理cache访问属性 在没有MMU的时候,cache本身的模型比较简单,如下所示,在使用的时候重点关注Cache数据的一致性问题。 …

linux高可用小知识点汇总-行云管家

不少运维小伙伴对于linux高可用相关知识不是很了解,今天我们小编就给大家汇总了一些,希望可以加深大家的了解。仅供参考哦! linux高可用小知识点汇总-行云管家 一、Linux是什么系统? 【回答】:Linux全称GNU/Linux&am…

小蓝本 第一本《因式分解技巧》 第二章 应用公式 笔记(第二天)

小蓝本 第一本《因式分解技巧》 第二章 应用公式 笔记(第二天)前言二代——应用公式常见公式公式场景公式分类基本间接推导公式(9)、(10)的推导问题分解方法方法1方法2公式推导总结:对照思想小技巧与注意事项习题2题目题解经验前言 第二天op…

基于贝叶斯网络的考虑不确定性的短期电能负荷预测(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

元年SecDevOps的实践之路

随着DevOps的发展,企业的数字化转型的需求也愈发强烈,DevOps大幅提升了企业应用迭代的速度。但同时,安全如果不能跟上步伐,不仅会抵消DevOps变革带来的提升,拖慢企业数字化转型的进程,还会导致漏洞与风险不…

Virtual Private Network

VPN技术的运行机制与发展 虚拟专用网络(Virtual Private Network,VPN)是利用不可靠的公用互联网络作为信息传输媒介,通过附加的安全隧道、用户认证和访问控制等技术实现与专用网络相类似的安全性能,从而实现对重要信息的安全传输。 根据技术应用环境的…

kotlin之循环控制

for循环 for 循环可以对任何提供迭代器&#xff08;iterator&#xff09;的对象进行遍历 java for循环写法 public static void main(String[] args) {int i 10;for (int j 0; j < i; j) {System.out.println(j);}} int[] q{1,2,3,4,5,6,7,8,9,10};for (int j:q) {System…