Invalid bound statement (not found)-Mybatis终极解决方法,真实有效
网上已经有很多文章说明可能导致这个报错的原因,无非是以下几种:
1、不小心在xxxMapper.xml
写了 id="xxxFunctionId"
两个或多个一样的 xxxFunctionId
2、如果 xxxMapperDao.java
的方法返回值是List,而xxxMapper.xml
select元素没有正确配置ResultMap
,或者只配置ResultType
3、看下xxxMapper.xml
的XML配置namespace
路径xxxpackage.xxxMapperDao是否正确
4、xxxMapper.xml
中实现的方法在xxxMapperDao.java中不存在
5、xxxMapperDao.java的@Component("xxxMapperDao") 在全局范围内有重复的
6、.如果你确认没有以上问题,请任意修改下对应的xml文件,比如添加/删除一个空行,保存.问题解决
7、在git/svn的本地/服务器仓库里查看一下xml里的最新变动,是不是不小心输入混进了什么特殊字符到xxxMapper.xml
中方法体标签意外的地方了。
如果全部检查了一遍,还发现没有问题,最好看下自己的配置文件,那时候很有可能是配置少了扫描mapper的东西:
在创建
SqlSessionFactory
的时候,加了以下配置:
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); sqlSessionFactoryBean.setTypeAliasesPackage("com.test.maper");
而且注意sqlSessionFactoryBean.setTypeAliasesPackage
参数不支持通配符*,如果有多个包可以通过","等分割如果需要加载依赖传递过来的
jar
包中的mapper
目录下的xml,classpath:mapper/*.xml
修改为``classpath:mapper/.xml`