LiuShuaiDong:Mybatis-plus之乐观锁

乐观锁:当用户对数据表里的数据进行修改时,会与数据表的version版本号进行比较,当version版本号与数据表版本号一致时,可以进行修改。否则认为这不是最新的一次修改,别人已经修改过了。

应用实例:当票务系统仅剩一张票时,所有人会抢这一张票。张三抢这个票,他的version号与数据表version一致,故他可以支付成功,支付成功后数据表的version号会更新。其他人购买时,version版本号和数据表的version号不一致,所以购买失败。

使用步骤:

1、给数据表增加version字段作为版本号(version最好设置默认为1,当version为null时乐观锁不起作用)。

2、给实体类增加version属性作为版本号,并用@Version注解标注

3、引入乐观锁插件,在mybatis-plus官网中复制代码到配置类中

@Configuration
@MapperScan("com.lls.mybatisplus.mappers")
public class ProConfig {

    
    //乐观锁插件
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
}

4、测试乐观锁(要先查询数据再更新数据,不然体现不了乐观锁,其次当version为null时发现乐观锁失效,所以在数据库中最好给个默认值为1)

@SpringBootTest
class MybatisPlusApplicationTests {

    @Autowired
    UserMapper userMapper;

    @Test
    void contextLoads() {
        User users = userMapper.selectById(13);
        System.out.println(users);


        users.setUsername("lld");
        users.setPassword("6666");
        userMapper.updateById(users);

    }
}

5、运行前后对比

前:

后:

经验分享 程序员 微信小程序 职场和发展