七叶笔记 » java编程 » SpringBoot整合MyBatis-Plus乐观锁不生效的问题及解决方法

SpringBoot整合MyBatis-Plus乐观锁不生效的问题及解决方法

SpringBoot整合Myabtis-Plus

在与官网配置一致的情况下依旧无法生效,如下整合mybatis-plus

1、依赖导入

其余的springboot与mysql相关的依赖就无需展示

配置文件配置

2、数据库插入

数据库以此为例

3、SpringBoot各个层次的操作

3.1、实体类

@TableName指定表名

@TableId指定表的主键,并且定义这是一个自增的主键

@TableField表示填充此属性,

@TableLogic表示假删除

@Version表示乐观锁

以上配置均将在configuration层中实现

3.2、configuration

3.2.1、TableField的insert与update

insert表示插入这一数据时,自动将当前时间填充至此属性

update表示修改此数据时,自动将当前时间填充

这里官网有告诉我们如何配置:

3.2.2、乐观锁配置

官网也有指出如何配置

3.3、mapper层

3.4、service层

实现类:

4、控制层测试

4.1、查询所有

ApiPost测试,能够成功获取全部的集合

这里可以发现service层无需写这种简单地查询语句,即可实现基本的sql功能

4.2、根据id修改信息

这里能发现有时候乐观锁不能生效,例如以下例子:

apiPost这样测试:

修改成功,但是去查看日志,发现并没有生效

乐观锁并没有自增

解决方案如下:

新增一个version

此时日志显示这样的信息:

数据库中成功自增

如果此时再修改,但version依旧是传1过去,则修改不成功

得出结论:version与当前数据库不一致则修改失败

所以我们需要在每次修改时,传入一个version,通过id查询当前version的值,在通过set传入实体类中一起发送到mybatisPlus自带的修改方法中,则能实现乐观锁

到此这篇关于关于SpringBoot整合MyBatis-Plus乐观锁不生效的问题解决方案的文章就介绍到这了,更多相关SpringBoot整合MyBatis-Plus乐观锁内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章