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;
  • 相关阅读:
    kafka概念使用简介注意点
    spring boot整合log4j2
    postgresql和oracle数据库对比
    postgresql数据操作
    Django缓存序列化信号
    Django补充
    Git学习
    JavaScript语法和类型
    Django分页
    Vue:配置组件
  • 原文地址:https://www.cnblogs.com/youcong/p/9794459.html
Copyright © 2011-2022 走看看