MybatisPlus的乐观锁插件使用!

前端之家收集整理的这篇文章主要介绍了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);
    }
原文链接:/mybatis/994056.html

猜你在找的Mybatis相关文章