MybatisPlus乐观锁问题
2023-04-07 本文已影响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));