Javabag 2023-06-09 23:28 采纳率: 0%
浏览 70

使用乐观锁遇到的问题

在springboot+MP 项目中使用乐观锁遇到的问题

img

img

img

img

img

使用乐观锁的东西我都配置了

第一种问题(找不到字段,直接测试失败)
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'MP_OPTLOCK_VERSION_ORIGINAL' not found. Available parameters are [param1, et]

第二种问题: (version字段为null导致无法更新数据,测试成功但是因为Version字段为null无法满足条件)
[main] [cn.itcast.mp.mapper.UserMapper.updateById]-[DEBUG] ==> Preparing: UPDATE tb_user SET age=?, version=? WHERE id=? AND version=?
[main] [cn.itcast.mp.mapper.UserMapper.updateById]-[DEBUG] ==> Parameters: 1000(Integer), 1(Integer), 2(Long), null
Consume Time:1 ms 2023-06-09 23:08:25:355
[main] [cn.itcast.mp.mapper.UserMapper.updateById]-[DEBUG] <== Updates: 0
Execute SQL:UPDATE tb_user SET age=1000, version=1 WHERE id=2 AND version=NULL

求达答案

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-16 11:35
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这篇博客: 解决Parameter ‘MP_OPTLOCK_VERSION_ORIGINAL‘ not found. Available parameters are [param1, et]的问题中的 经过分析原来是只配置了分页的拦截器而忘记在mybatis-plus拦截器中添加乐观锁拦截器 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      需要在mybatis-plus拦截器的配置中添加OptimisticLockerInnerInterceptor()

      @Bean
          public MybatisPlusInterceptor mybatisPlusInterceptor(){
              MybatisPlusInterceptor mpi = new MybatisPlusInterceptor();
              //添加分页拦截器
              mpi.addInnerInterceptor(new PaginationInnerInterceptor());
              //添加乐观锁拦截器
              mpi.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
              return mpi;
          }
      

      配置mybatis-plus乐观锁的步骤
      1、先在数据库表中添加version字段
      2、在实体类中定义version字段,并使用@Version注解标记
      3、在mybatis-plus拦截器中添加OptimisticLockerInnerInterceptor()乐观锁拦截器


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 6月9日