mybatis plus实现乐观锁

乐观锁主要用于解决数据更新丢失的问题

比如:多个人同时修改一条数据时,最后一个提交的会把之前提交的全部覆盖(典型的就是12306抢票问题)

悲观锁:

简单来说就是串行操作,一个人在进行数据修改时,其他人不能对数据进行操作

乐观锁:

通过版本号version来控制数据的操作,当多人同时对一条数据进行操作时,会通过对版本号进行比较,当当前版本号与你的版本号相同,则操作数据成功,操作成功之后,版本号version加1,不同时操作失败

操作乐观锁

(1)首先我们需要在数据库中和bean实体类中添加version字段

数据库

在这里插入图片描述
bean实体类

在这里插入图片描述
然后我们需要在该字段上加注解@Version

	@Version
    @TableField(fill = FieldFill.INSERT)
    private Integer version;

@Version 是import com.baomidou.mybatisplus.annotation.Version下的

@TableField(fill = FieldFill.INSERT)
注解是mybatis plus中的自动填充功能,主要在插入数据时将version置为1

mybatis plus自动填充功能请查看我的另外一篇博客mybatis plus自动填充

(2)然后我们需要编写Mp配置类

在config包下创建一个MpConfig配置类

import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("org.ww.mpdemo01.mapper")
public class MpConfig {
    /**
     * 乐观锁插件
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
}

@MapperScan(“org.ww.mpdemo01.mapper”) 这个注解我没有放在启动类里,而是放在了这个mybatis plus配置类中

(3)最后我们可以来进行测试

我们现在数据库中添加一条数据

在这里插入图片描述
我们可以看到他的版本号是1

然后我们通过id修改这条数据

//测试乐观锁
    @Test
    void OptimisticLocker(){
        User user = userMapper.selectById(1293470678296637441L);
        user.setName("hhhhh");
        userMapper.updateById(user);
    }

在查看数据库

在这里插入图片描述
此时version版本变成2了

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值