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、注意事项

  • 相关阅读:
    Unity3D笔记 英保通三 脚本编写 、物体间通信
    Unity3D笔记 英保通二
    Unity3D 面试ABC
    Unity3D 记第一次面试
    Unity3D笔记 英保通一
    (转)关于如何学好游戏3D引擎编程的一些经验
    Java_异常
    Java_多态
    Java_继承(下)
    Java_继承(上)
  • 原文地址:https://www.cnblogs.com/jwen1994/p/14537529.html
Copyright © 2011-2022 走看看