使用乐观锁遇到的问题

在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

求达答案

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 解决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()乐观锁拦截器


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

回答部分参考、引用ChatGpt以便为您提供更准确的答案:

针对您的问题,解决PyCharm的Python Console在无操作后自动断开连接的问题,可以考虑以下方法:

  1. 调整PyCharm的设置:在PyCharm中,您可以尝试调整一些相关设置来延长连接的超时时间或禁用连接超时。您可以打开PyCharm的设置,然后找到"Build, Execution, Deployment" > "Console"或"Terminal"选项,在这里您可能会找到有关连接超时的设置项,尝试将其调整为更长的时间或禁用它。
  2. 使用SSH保持连接:如果您使用SSH连接到远程服务器,在连接远程服务器时,可以使用SSH的KeepAlive功能来保持连接的活跃状态。您可以在SSH配置文件(通常是~/.ssh/config)中添加以下行来启用KeepAlive:
    Host *
         ServerAliveInterval 60
     
    这将每60秒发送一个KeepAlive信号到服务器,防止连接超时断开。
  3. 使用终端多路复用工具:终端多路复用工具(如tmux或screen)可以创建持久化的会话,即使断开连接,会话仍然在后台运行。您可以在会话中打开Python解释器并运行代码,在下次连接时可以恢复会话并继续之前的工作,无需重新运行代码。
  4. 编写脚本并使用远程执行:将您的代码编写为脚本,并通过SSH命令在远程服务器上执行脚本。这样,即使连接断开,您也可以重新连接到服务器并继续执行脚本,而无需重新运行之前的代码。

请根据您的具体情况选择适合您的解决方案,以解决PyCharm的Python Console连接超时的问题,提高工作效率。