zoukankan      html  css  js  c++  java
  • 【Mybatis】mybatis plus 乐观锁实现

    接着上篇
    https://www.cnblogs.com/amberbar/p/12152305.html

    mybatis plus 中如何实现乐观锁

    主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新。
    乐观锁实现方式:

    • 取出记录时,获取当前version
    • 更新时,带上这个version
    • 执行更新时, set version = newVersion where version = oldVersion
    • 如果version不对,就更新失败
    1. 修改数据表
    ALTER TABLE mybatis_plus.`user` ADD COLUMN `version` INT
    
    1. 修改User.java
        @Version
        @TableField(fill = FieldFill.INSERT)
        private Integer version;
    
    1. 添加乐观锁插件
    @EnableTransactionManagement
    @Configuration
    @MapperScan("com.amber.learnmore.mapper")
    public class MybatisPlusConfig {
    
        /**
         * 乐观锁插件
         */
        @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }
    }
    
    1. 测试
      先执行insert方法,
        @Test
        void insert() {
            User user = new User();
            user.setName("Helen");
            user.setAge(19);
            user.setEmail("7332@qq.com");
            int result = userMapper.insert(user);
            System.out.println(result);
            System.out.println(user);
        }
    

    查看数据库,可以发现新插入的数据,version为0。
    再执行update

        @Test
        void update() {
            User user = userMapper.selectById(1213744199116120065L);
            user.setName("amber1");
            int i = userMapper.updateById(user);
            System.out.println(i);
        }
    
    

    可以看到数据库中的version变成了1,就成功了。

    mybatis plus 特别说明

    1. 支持的数据类型只有 int,Integer,long,Long,Date,Timestamp,LocalDateTime
    2. 仅支持 updateById(id) 与 update(entity, wrapper) 方法
  • 相关阅读:
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    [Abp vNext 入坑分享]
    腾讯云集群服务部署mysql并挂载到服务器
    加密解密五种算法的实现
  • 原文地址:https://www.cnblogs.com/amberbar/p/12152928.html
Copyright © 2011-2022 走看看