• MybatisPlus的乐观锁插件使用!


    本文代码样例均已上传至Gitee:https://gitee.com/tqbx/springboot-samples-learn/tree/master/spring-boot-mybatis-plus-primer

    乐观锁适用于读多写少的场景。

    乐观锁的实现机制:

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

    使用方法:

    • 在字段上加上@Version注解。
        // 版本号
        @Version
        private Integer version;
    
    • 支持的数据类型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
    • 整数类型下 newVersion = oldVersion + 1
    • newVersion 会回写到 entity
    • 仅支持 updateById(id)update(entity, wrapper) 方法
    • update(entity, wrapper) 方法下, wrapper 不能复用!!!
    • 配置乐观锁插件
        @Bean
        public OptimisticLockerInterceptor optimisticLockerInterceptor() {
            return new OptimisticLockerInterceptor();
        }
    
    • 测试,为更新的实体设置期望的版本号:
        @Test
        void update() {
            //PDATE user SET name=?, update_time=?, version=? WHERE id=? 
            // AND version=? AND deleted=0
            int version = 2;
            User user = new User();
            user.setId(1320037517763842049L);
            user.setName("sm2");
            user.setVersion(version);//期望的版本号
            boolean b = userService.updateById(user);
            System.out.println(b);
        }
    
  • 相关阅读:
    (转) hive调优(2)
    (转)hive调优(1) coding调优
    hive on tez 错误记录
    tez 0.9.0 配置
    hive on tez
    让博客园自动生成目录
    hive --metastore三种模式
    hive 使用beelin连接报错
    mysql my.cnf文件
    1、Kfaka 部署
  • 原文地址:https://www.cnblogs.com/summerday152/p/13878102.html
Copyright © 2020-2023  润新知