zoukankan      html  css  js  c++  java
  • MP实战系列(十七)之乐观锁插件

    声明,目前只是仅仅针对3.0以下版本,2.0以上版本。

    意图:

    当要更新一条记录的时候,希望这条记录没有被别人更新

    乐观锁实现方式:

    • 取出记录时,获取当前version
    • 更新时,带上这个version
    • 执行更新时, set version = yourVersion+1 where version = yourVersion
    • 如果version不对,就更新失败

    第一步,配置

    SSM框架(Spring+SpringMVC+MyBatis-Plus):

    spring-mybatis.xml配置:

    <bean class="com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor"/>

    SpringBoot配置:

      @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }

    第二步,加上注解

    public class User {
    
        @Version
        private Integer version;
    
      
    }

    特别说明: 仅支持int,Integer,long,Long,Date,Timestamp

    测试代码:

    int id = 100;
    int version = 2;
    
    User u = new User();
    u.setId(id);
    u.setVersion(version);
    
    
    if(userService.updateById(u)){
        System.out.println("Update successfully");
    }else{
        System.out.println("Update failed due to modified by others");
    }

    示例SQL原理:

    update tbl_user set name='update',version=3 where id=100 and version=2;
  • 相关阅读:
    MySQL-InnoDB锁(一)
    Java方法调用机制
    并发编程-锁相关的内存语义
    Java开发工具汇总
    并发编程-底层实现原理
    并发编程-Java内存模型
    JsonTest
    PTA(Basic Level)1034.有理数四则运算
    PTA(Advanced Level)1081.Rational Sum
    PTA(Advanced Level)1008.Elevator
  • 原文地址:https://www.cnblogs.com/youcong/p/9794459.html
Copyright © 2011-2022 走看看