• MybatisPlus 乐观锁插件使用


    什么是乐观锁?

      每次去拿数据的时候都认为别人不会修改,更新的时候会判断是别人是否回去更新数据,通过版本来判断,如果数据被修改了就拒绝更新。

     

    Mybatis Plus里面自带一个插件,可以帮我们轻松实现乐观锁

    使用方式:

    1、需要在数据库表创建version字段,类型为int

    CREATE TABLE `banner` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `img` varchar(524) DEFAULT NULL COMMENT '图片',
      `url` varchar(524) DEFAULT NULL COMMENT '跳转地址',
      `version` int(11) DEFAULT '1' COMMENT '乐观锁版本号'
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;

    2、创建实体类,增加version属性注解

    @Version
    private Integer version;

    3、配置乐观锁插件

    @Configuration
    public class MybatisPlusPageConfig {
    
        /**
         * 新的分页插件(推荐)
         */
        @Bean
        public MybatisPlusInterceptor mybatisPlusInterceptor() {
            MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
            //分页插件
            interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    
            //乐观锁插件
            interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
    
            return interceptor;
        }
    
    }

    4、测试使用,当修改version对象版本号的数据记录,乐观锁自动生效

        @Test
        public void testUpdaate(){
            Banner banner = new Banner();
            banner.setUrl("http://baidu.com");
            banner.setId(3);
            banner.setVersion(2); //对应的版本号
            log.info("修改结果:{}",bannerDao.updateById(bannerDO));
        }
  • 相关阅读:
    为了博多
    [JSOI2008]星球大战starwar
    【网络流24题】最小路径覆盖问题
    【中学高级水题本】关路灯
    【网络流24题】分配问题
    【网络流24题】方格取数问题
    【网络流24题】汽车加油行驶
    [洛谷P2057][bzoj1934]善意的投票(最大流)
    LeetCode(38) Count and Say
    LeetCode(36)Valid Sudoku
  • 原文地址:https://www.cnblogs.com/M87-A/p/15359997.html
Copyright © 2020-2023  润新知