乐观锁
在面试过程中,我们经常被问道乐观锁,悲观锁!这个其实非常简单!
乐观锁:顾名思义十分乐观,他总是认为不会出现问题,无论干什么不去上锁!如果出现问题,再次更新值测试
悲观锁:顾名思义十分悲观,他总是认为总是出现问题,无论干什么都会上锁!再去操作
我们这里主要讲解 乐观锁 机制!
乐观锁实现方式:
- 取出记录时,获取当前version
- 更新时,带上这个version
- 执行更新时, set version = newVersion where version = oldVersion
- 如果version不对,就更新失败
乐观锁:1、先查询,获得版本号 version = 1
-- A
update user set name = "haoran",version = version + 1
where id = 2 and version = 1
-- B 线程抢先完成,这个时候 version = 2,会导致A 修改失败
update user set name = "haoran",version = version + 1
where id = 2 and version = 1
测试一下Mybatis Plus的乐观锁插件
1、给数据库增加version字段!
2、我们实体类加对应的字段
@Version //乐观锁Version的注解
private Integer version;
3、注册组件
@MapperScan("com.zheng.mapper") //扫描 mapper 文件夹
@EnableTransactionManagement
@Configuration //配置类
public class MyBatisPlusConfig {
// 注册乐观锁插件