zoukankan      html  css  js  c++  java
  • Mybatis Plus 乐观锁

    一、简介

    当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式:

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

    二、代码实现

    1、注入拦截器

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

    2、字段上加上@Version注解

    @Version
    private Integer version;

    3、测试

    @Test
    public void update() {
        User user = new User();
        user.setId(1371308620579450882L);
        user.setAge(69);
        user.setVersion(1);
        int rows = userMapper.updateById(user);
        System.out.println("rows===" + rows);
    }

    日志输出如下,可以看出更新时带入版本号条件

    start update fill ....
    DEBUG==>  Preparing: UPDATE user SET age=?, update_time=?, version=? WHERE id=? AND version=? AND deleted='0' 
    DEBUG==> Parameters: 69(Integer), 2021-03-15 15:00:14.568(Timestamp), 2(Integer), 1371308620579450882(Long), 1(Integer)
    DEBUG<==    Updates: 1
    rows===1

    4、注意事项

  • 相关阅读:
    十进制数转换
    桶排序
    快速排序
    单词倒排
    (c++) string b; cin>>b; int i=strlen(b); 报错的原因。
    n的阶乘(1<n<10000)(结果超大……)
    2020软件工程最后一次作业
    2020软件工程第四次作业
    2020软件工程第三次作业
    2020软件工程第二次作业
  • 原文地址:https://www.cnblogs.com/jwen1994/p/14537529.html
Copyright © 2011-2022 走看看