Mybatis-Plus的@Version注解:使用updateBatchById方法引发的问题
创始人
2024-03-28 22:52:51
0

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

在没有@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方法的返回值是没问题的!

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...