本次问题最终解决
查了很多资料,下面转载几乎是最全的一份资料,但仍未找到原因。最终对比现有项目结构,发现最终问题:由于Mybatis在自动生成model,mapper,和xml文件时,并未将mapper和xml配置在同一个包下,从而导致无法找到xml文件。解决办法,Mybatis的generator.config文件中配置在同一包下。或者再生成文件后,手动调整
一、说明
造成MyBatis报Invalid bound statement (not found)错误有很多种,主要原因就是xxxMapper.java与xxxMapper.xml没有正确绑定。没有正确绑定的原因有很多种,所以导致有些人在网上百度查询到别人的博客上写的解决方法之后却无法解决自己的问题,在此作一些方法总结。
二、错误产生原因及解决方法
2.1 映射xxxMapper.xml文件未被扫描
如果你使用的是Maven构建的项目,那么因为maven默认只是加载src/main/resources目录下的配置文件,并不会主动加载src/main/java下的配置文件。如果你的Mybatis映射xml文件是与接口文件放在同一目录下的话,就必须在pom.xml文件中加以上以下配置:
2.2 接口名称与xml映射文件名称不一致
请检查你的的xxxMapper.java文件与xxxMapper.xml文件名称是否一致;
2.3xml映射文件中的namespace配置错误
namespace必须等于接口的完整类名
2.4 xml映射文件中的select/delete/update/insert等标签的id值与接口中的方法名称不一致
2.5xml映射文件中的select/delete/update/insert等标签的parameterType的值与接口中的方法的参数的类型不一致
2.6 xml映射文件中的select/delete/update/insert等标签的resultMap的type或resultType与接口中的方法的返回参数的类型不一致
2.7xml映射文件中的select/delete/update/insert等标签中的databaseId的值在spring配置文件中未找到
以上整理的错误产生的原因并不全,以后再发生此问题如果不是以上收集的几点时我会再作补充。