数据库添加乐观锁,解决事务并发带来的问题

数据库添加乐观锁

作用:为了解决事务并发带来的问题

介绍:就是给数据库的数据表添加一个字段version,在更新数据库记录是将version加1。

  1. 查询时记录获取当前的version
  2. 更新的时候,带上这个version
  3. 执行更新时,执行时的version要和查询时的version一致,并且给version+1;否则报错

操作流程

1.数据库中添加version
2.实体类的字段上加上 @Version //乐观锁Version注解
3.添加相关配置

package com.edu.config;

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;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@MapperScan("com.edu.mapper")
@EnableTransactionManagement
@Configuration // 配置类
public class MyBatisPlusConfig {
    // 注册乐观锁插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }
}

4.测试

 @Test
    public void testOptimisticLock2(){
        // 线程1
        User user = userMapper.selectById(1L);
        user.setName("xiaobai");
        user.setEmail("123123132@qq.com");

        // 模拟另外一个线程执行了插队操作
        // 线程2
        User user2 = userMapper.selectById(1L);
        user2.setName("xiaobai222222");
        user2.setEmail("123123132@qq.com");
        userMapper.updateById(user);

        // 自旋锁来多次尝试提交
        userMapper.updateById(user2);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值