mybatis-plus乐观锁

时间:2024-6-14    作者:老大夫    分类: SSM


什么是乐观锁?就是快乐的锁。

为了解决并发修改,出现了两种锁,乐观锁和悲观锁。

乐观锁:不上锁,反复去尝试

悲观锁:上锁,等待

比喻:厕所问题

乐观锁:厕所没有门,第一个人进去,第二个人也能进去,发现有人第二个人再出来,过一会儿再进去看看有没有人

悲观锁:进入坑位,上锁,外面的人等着。

实现技术

乐观锁:

  1. 版本号控制
  2. CAS
  3. 无锁数据结构

悲观锁:

  1. 互斥锁,读写锁
  2. 数据库锁
  3. 信号锁

版本号控制

  1. 修改启动类配置参数
@SpringBootApplication
@MapperScan("com.atguigu.mapper")
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);
    }

    //mybatis-plus插件加入进来IOC容器
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        //mybatis插件集合
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        //乐观锁[版本号插件]
        mybatisPlusInterceptor().addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}
  1. 数据库添加对应字段

  1. 实体类内创建对应属性

只需要加上version注解

@Data
@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
    //当前属性对应逻辑删除的字段
    //0未删除  1已经删除
    @TableLogic("deleted")
    private Integer deleted;
    @Version
    private Integer version;
}


扫描二维码,在手机上阅读

推荐阅读: