9、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 修改实体类

@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、测试结果

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

猜你喜欢

转载自blog.csdn.net/weixin_43304253/article/details/126823933