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插队成功

 

posted @ 2021-06-24 22:09  一拳超人的逆袭  阅读(68)  评论(0编辑  收藏  举报