美文网首页想法读书简友广场
MybatisPlus乐观锁问题

MybatisPlus乐观锁问题

作者: 心笙共鸣 | 来源:发表于2023-04-07 23:46 被阅读0次

    出现Caused by: org.apache.ibatis.binding.BindingException: Parameter 'MP_OPTLOCK_VERSION_ORIGINAL' not found. Available parameters are [param1, et]

    image.png

    实体类上标注,@Version


    image.png

    添加乐观锁拦截器


    image.png

    使用这个两个方式测试,出现开篇提到的错误


    image.png
    image.png

    控制台输出的错误信息


    1987bd8b9092fb379c6bd124cfddcf4.png
    后面使用UpdateWrapper解决,似乎旧方式已经无法使用
    image.png

    代码实现如下,可按需求更改:

     User user = new User();
            user.setId(3L);
            user.setName("Jock889");
            //user.setVersion(2); //手动设置版本号
            userDao.update(user, new UpdateWrapper<User>().eq("id",
                    user.getId()).eq("version",
                    user.getVersion()).set("version", user.getVersion()+1));
    

    模拟多用户同时访问

            //模拟多用户
            //创建用户1
            User user1 = userDao.selectById(4L);
            System.out.println("version 1" + user1.getVersion());
    
            //创建用户2
            User user2 = userDao.selectById(4L);
            System.out.println("version 2" + user2.getVersion());
    
    
            // 对用户1进行更新操作
            user1.setName("it aaa");
            userDao.update(user1, new UpdateWrapper<User>().eq("id",
                    user1.getId()).eq("version",
                    user1.getVersion()).set("version", user1.getVersion() + 1));
    
    
    
    
            // 对用户2进行更新操作
            user2.setName("it bbb");
            userDao.update(user2, new UpdateWrapper<User>().eq("id",
                    user2.getId()).eq("version",
                    user2.getVersion()).set("version", user2.getVersion() + 1));
    

    相关文章

      网友评论

        本文标题:MybatisPlus乐观锁问题

        本文链接:https://www.haomeiwen.com/subject/nmymddtx.html