springBoot--mybatis plus-配置乐观锁,解决并发,表锁问题

一,乐观锁

乐观锁顾名思义就是在操作时很乐观,认为操作不会产生并发问题(不会有其他线程对数据进行修改),因此不会上锁。但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS(compare
and swap)算法实现。 简单理解:这里的数据,别想太多,你尽管用,出问题了算我怂,即操作失败后事务回滚、提示。

二,

  • myatis plus官方文档给出spring boot 的配置:
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
    return new OptimisticLockerInterceptor();
}

在mybatis-plus的配置中加上即可

三,

  • 注解实体字段 @Version 必须要加
@Version
private Integer version;

特别说明:

  • 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
  • 整数类型下 newVersion = oldVersion + 1
  • newVersion 会回写到 entity 中
  • 仅支持 updateById(id) 与 update(entity, wrapper) 方法
  • 在 update(entity, wrapper) 方法下, wrapper 不能复用!!!

四,
数据库字段,这里给默认值给初始值给 1 是为了方便
springBoot--mybatis plus-配置乐观锁,解决并发,表锁问题_第1张图片

这样乐观锁就配置完成,直接使用即可,配置完成科研写一个简单的修改,在修改的时候回自动带上version
进行累加,查找条件也会带上version,如果没有起作用请查看配置,是否起作用(标题二)

你可能感兴趣的:(并发)