9、Mybatis-Plus 乐观锁

简介: 这篇文章介绍了Mybatis-Plus中乐观锁的实现和使用流程,包括使用场景、在实体类中添加版本号字段、配置乐观锁插件以及通过测试验证乐观锁的效果,确保在并发环境下数据的一致性。

第一篇:1、Mybatis-Plus 创建SpringBoot项目
第二篇:2、Mybatis-Plus 测试增、删、改、查
第三篇:3、Mybatis-Plus 自定义sql语句
第四篇:4、Mybatis-Plus 通用service的操作
第五篇:5、Mybatis-Plus 常用注解
第六篇:6、Mybatis-Plus wrapper的使用
第七篇:7、Mybatis-Plus condition的使用
第八篇:8、Mybatis-Plus 分页插件、自定义分页

文章目录

  • 1、使用场景
  • 2、乐观锁使用流程
  • 3、Mybatis-Plust 实现乐观锁
    • 3.1 修改实体类
    • 3.2、添加乐观锁插件配置
    • 3.3、流程测试
    • 3.4、测试结果

1、使用场景

在这里插入图片描述

2、乐观锁使用流程

在这里插入图片描述

3、Mybatis-Plust 实现乐观锁

3.1 修改实体类

@Data
public class Product {
    private Long id;
    private String name;
    private Integer price;
    @Version
    private Integer version;
}

3.2、添加乐观锁插件配置

@Configuration
//扫描mapper接口所在的包
@MapperScan("com.zyz.mybatisplus.mapper")
public class MyBatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //乐观锁插件
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }

}

3.3、流程测试

@Test
    public void test04(){
        Product p1 = productMapper.selectById(1);
        System.out.println("小李获得价格"+p1.getPrice());

        Product p2 = productMapper.selectById(1);
        System.out.println("小王获得价格"+p2.getPrice());

        p1.setPrice(p1.getPrice()+50);
        int rs1 = productMapper.updateById(p1);
        System.out.println("小李操作的结果"+rs1);

        p2.setPrice(p2.getPrice()-30);
        int rs2 = productMapper.updateById(p2);
        System.out.println("小王操作的结果"+rs2);
        if(rs2 == 0){
            p2 = productMapper.selectById(1L);
            p2.setPrice(p2.getPrice()-30);
            int rs = productMapper.updateById(p2);
        }

        Product p3 = productMapper.selectById(1L);
        System.out.println("老板查看的结果"+p3.getPrice());

    }

3.4、测试结果

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

相关文章
|
6月前
|
XML 前端开发 Java
Mybatis-Plus乐观锁配置
Mybatis-Plus乐观锁配置
|
7月前
|
SQL 数据库
MyBatisPlus之逻辑删除、MyBatisPlus解决并发问题的乐观锁机制
MyBatisPlus之逻辑删除、MyBatisPlus解决并发问题的乐观锁机制
91 2
|
7月前
|
数据库
MyBatisPlus-乐观锁概念及实现步骤
MyBatisPlus-乐观锁概念及实现步骤
140 0
|
7月前
|
SQL 存储 算法
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
|
7月前
|
存储 Java 数据库连接
MyBatis-Plus如何娴熟运用乐观锁
MyBatis-Plus如何娴熟运用乐观锁
270 0
|
7月前
|
Java 关系型数据库 数据库连接
干翻Mybatis源码系列之第十二篇:基于Mybatis Plugins做一个乐观锁
干翻Mybatis源码系列之第十二篇:基于Mybatis Plugins做一个乐观锁
|
XML Java 数据库
mybatis-plus乐观锁
mybatis-plus乐观锁
73 0
|
Java
MyBatisPlus(七)乐观锁
使用乐观锁的意图是:当要更新一条记录的时候,希望这条记录没有被别人更新。那么需要在表中增加一个字段version来实现。
11893 0
|
安全 Java 数据库连接
mybatis plus整合乐观锁
mybatis plus整合乐观锁
|
数据库
MyBatisPlus的乐观锁和悲观锁
MyBatisPlus的乐观锁和悲观锁
170 0