MybatisPlus实现乐观锁

首先先介绍一下乐观锁与悲观锁。
乐观锁主要用来解决丢失更新问题
所谓的丢失更新问题就是当一条数据同时被两个人拿到进行操作时,第一个人将数据实现了更新,紧接着第二个人拿着的数据看起来还是旧数据,实则已经被修改过了,第二个人对该数据再次进行修改。倘若两个人修改的数据不一样,第一个人就会一直以为自己已经修改了数据,并运用着自己以为改了但是被另一个人给改掉而自己却不知道的数据,实际运用场景中可能会引发较大的问题。

运用悲观锁解决问题可以用synchronized或者lock进行解决,但是带来的问题就是当一个人在操作的时候,别人操作不了,实际运用中并不常见,就好像你想在某网站看电影,然后发现里面有个人在看进不去,要等他不看了,你才能看,这时候你就不会想等着他出来再看了。所以悲观锁也就串行锁。
总结:影响效率、扰乱兴致、实际开发基本不用。

运用乐观锁解决,运用了版本号控制,给需要操作的数据加个属性version,当我们取出记录想要操作同时获取version;更新的时候会带上这个version,比较新的version和原有的version是不是一样,一样的version才进行更新操作,更新完成后,version就会+1,这时候另外一个拿到数据想要更新的人,在比较version那里就会不同从而更新失败。

运用MybatisPlus实现乐观锁
1、在数据库表加上 version 字段
2、在实体类加上version
3、加上注解@version
4、写一个配置类配置乐观锁插件

@Configuration

public class MyConfig {
//乐观锁的插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
}

猜你喜欢

转载自blog.csdn.net/fighting32/article/details/107063966