Invalid bound statement (not found) 问题处理

简介: 您好,我是码农飞哥,感谢您阅读本文!本文将介绍使用MyBatis时出现的一些常见问题。

您好,我是码农飞哥,感谢您阅读本文!本文将介绍使用MyBatis时出现的一些常见问题。

问题描述

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.modules.dao.rest.ArmWorksMapper.selectById
  at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:227)
  at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:49)
  at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
  at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
  at com.sun.proxy.$Proxy154.selectById(Unknown Source)

问题分析

从问题的描述,可以看出就是ArmWorksMapper类的selectById 方法找不到对应的SQL语句。可能的原因有如下:

问题排查

1.检查ArmWorksMapper.xml 的SQL文件中是否有selectById方法,如果对应,则进行下一步检查

2.检查ArmWorksMapper.xml 的namespace是否与ArmWorksMapper类对应,如果对应,则进行下一步检查

3.检查mapper.xml文件是否被扫描到,就是检查SqlSessionFactoryBean的配置。

@Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean.getObject();
    }

这是我配置的SqlSessionFactoryBean类,在会话工厂中没有设置mapperLocations,所以MyBatis找不到所有的Mapper.xml文件。修改的方法也很简单。就是设置mapperLocations属性。

@Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*mapper.xml"));
        return sqlSessionFactoryBean.getObject();
    }


相关文章
|
6月前
|
SQL XML Java
Invalid bound statement (not found): com.zheng.mapper.UserMapper.login
这篇文章解释了MyBatis中接口与Mapper配置文件映射绑定失败的原因,并提供了解决步骤,包括确保Mapper.xml文件的namespace与Mapper接口的类路径相同,接口方法名与XML中定义的statement id相同,以及接口方法的输入输出参数类型与Mapper.xml中定义的sql的parameterType和resultType类型匹配。
Invalid bound statement (not found): com.zheng.mapper.UserMapper.login
|
6月前
|
开发工具 git
成功解决:Svnion not found. installat
这篇文章分享了作者在使用VSCode进行SVN版本控制时遇到的一个问题,即SVN插件提示找不到`svn.exe`的问题。原因是在安装SVN时没有选择客户端工具,导致没有`svn.exe`文件。文章提供了解决方案,包括重新安装SVN时选择客户端工具,并在VSCode的`setting.json`文件中配置SVN的路径。
成功解决:Svnion not found. installat
|
6月前
|
XML Java Maven
Invalid bound statement (not found)
Invalid bound statement (not found)
54 0
|
8月前
Invalid bound statement (not found)错误【已解决】
Invalid bound statement (not found)错误【已解决】
432 1
|
9月前
|
Java
SpringBoot:Invalid bound statement (not found)的原因和解决方案
SpringBoot:Invalid bound statement (not found)的原因和解决方案
|
XML Java 数据库连接
BindingException:Invalid bound statement not found
BindingException:Invalid bound statement not found
101 0
|
编译器
解决Invalid bound statement (not found)错误~
解决Invalid bound statement (not found)错误~
106 0
|
XML SQL 数据格式
Invalid bound statement (not found)错误的可能原因
Invalid bound statement (not found)错误的可能原因
903 0
解决MybatisPlus中Invalid bound statement (not found)..错误
解决MybatisPlus中Invalid bound statement (not found)..错误
941 0
解决MybatisPlus中Invalid bound statement (not found)..错误