乐观锁 : 故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题,
再次更新值测试。乐观锁可以保证在并发情况下数据的准确性。
乐观锁实现方式:
取出记录时,获取当前 version
更新时,带上这个version
执行更新时, set version = newVersion where version = oldVersion
如果version不对,就更新失败
乐观锁: 1 、先查询,获得版本号 version = 1-- Aupdate user set name = "kuangshen" , version = version + 1where id = 2 and version = 1-- B 线程抢先完成,这个时候 version = 2 ,会导致 A 修改失败!update user set name = "kuangshen" , version = version + 1where id = 2 and version = 1
Mybatis-Plus中的乐观锁插件 。
(1)给数据库中增加version字段
(2)我们实体类加对应的字段
@Version // 乐观锁 Version 注解private Integer version ;
(3) 注册组件
@EnableTransactionManagement@Configuration // 配置类public class MyBatisPlusConfig {// 注册乐观锁插件@Beanpublic OptimisticLockerInterceptor optimisticLockerInterceptor () {return new OptimisticLockerInterceptor ();}}