2.乐观锁,悲观锁

 

 

 在数据库中添加乐观锁字段

 在pojo类的属性上增加注解

    //乐观锁的注解
    @Version
    private Integer version;

mybatis-plus的配置类,之前在主入口配置的mapper可以移植到此处

@MapperScan("com.wu.mapper")
@EnableTransactionManagement//开启事务
@Configuration//配置类
public class MybatisPlusConfig {
    //注册乐观锁的插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }
}

测试乐观锁成功

    //测试乐观锁成功
    @Test
    public void testOptimisticLocker(){
        //查询用户信息
        User user=userMapper.selectById(1L);
        //修改用户信息
        user.setName("小吴");
        userMapper.updateById(user);
    }
JDBC Connection [HikariProxyConnection@1038002783 wrapping com.mysql.cj.jdbc.ConnectionImpl@4667c4c1] will not be managed by Spring
==>  Preparing: UPDATE user SET name=?, age=?, email=?, version=?, create_time=?, update_time=? WHERE id=? AND version=? 
==> Parameters: 小吴(String), 1(Integer), 5654@qq.com(String), 2(Integer), 2021-06-25 05:18:23.0(Timestamp), 2021-06-25 05:18:23.0(Timestamp), 1(Long), 1(Integer)
<==    Updates: 1

测试乐观锁失败

    //测试乐观锁失败
    @Test
    public void testOptimisticLocker2(){
        //查询用户信息
        User user=userMapper.selectById(1L);
        //修改用户信息
        user.setName("小吴1");
        //查询用户信息
        User user2=userMapper.selectById(1L);
        //修改用户信息
        user2.setName("小吴2");
        //小吴2插队
        userMapper.updateById(user2);
        userMapper.updateById(user);//如果没有乐观锁就会覆盖插队线程的值
    }

结果是小吴2插队成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值