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);
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM