当要更新一条记录的时候,希望这条记录没有被别人更新
    乐观锁实现方式:
    1、取出记录时,获取当前 version
    2、更新时,带上这个 version
    3、执行更新时, set version = newVersion where version = oldVersion
    4、如果 version 不对,就更新失败
    简单的说就是:
    1、数据库中添加version字段
    2、取出记录时,获取当前version

    1. SELECT id,`name`,price,`version` FROM product WHERE id=1

    3、更新时,version + 1,如果where语句中的version版本不对,则更新失败

    1. UPDATE product SET price=price+50, `version`=`version` + 1 WHERE id=1 AND `version`=1

    Mybatis-Plus实现乐观锁
    步骤:
    1、在表中添加version字段。
    image.png
    2、修改实体类
    3、添加乐观锁插件配置
    spring xml 方式:
    image.png
    springboot方式:

    1. @Bean
    2. public MybatisPlusInterceptor mybatisPlusInterceptor() {
    3. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    4. //乐观锁插件
    5. interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
    6. return interceptor;
    7. }

    image.png
    这样就配置好了乐观锁插件。
    image.png
    优化流程
    image.png