原文地址:https://www.cnblogs.com/jstarseven/p/5803697.htmlhtml
有时候解决问题不单单是解决问题。-----jstarsevenjava
最近采用了开发工具IDEA开发SSM开发框架完成后,发布的时候出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found。。。apache
一开始觉得是本身配置文件写的有问题找了半天也没有问题,以后才发现是本身对IDEA工具使用的不够熟悉。app
原来eclipse默认会帮你整合resources目录下的mapper配置文件,而idea不能自动识别,须要额外配置。框架
先说该异经常看法决方案:eclipse
通常是xml映射文件有错误。可是这个提示不必定准确,以至网上有些资料说这个问题很奇怪。出现这个错误通常的解决方式在下面有说明:
通常的缘由是Mapper interface和xml文件的定义对应不上,须要检查包名,namespace,函数名称等可否对应上,须要比较细致的对比。
按如下步骤一一执行:
1:检查xml文件所在的package名称是否和interface对应的package名称一一对应
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称可否对应上
4:去掉xml文件中的中文注释
5:随意在xml文件中加一个空格或者空行而后保存(触发了ide的自动编译功能。因为xml文件在编译的时候,不必定总能当即从源目录复制到class文件的编译目录(MyEclipse常常出这个问题),有时候你源目录中的xml文件已经修改好了,而class所在的目录里面仍是旧的。所以真正肯定有效的方式是将正确的xml文件复制到class输出目录。)
(博主使用IDEA工具)
可是博主在尝试以上方案以后仍然报错,在我查看了发布以后的源代码以后,发现*Mapper.xml文件并无发布到目标文件中。
如图所示:
Mapper目录:

发布以后target目录中:ide
竟然没有xml文件,忽然意识到了异常的缘由:函数
idea中我将mapper类型是source,而xml文件在发布时不会编译,同时也不会发布到target中,致使项目运行时找不到mapper.xml文件。工具
解决方案:我将*Mapper.xml文件提取到指定文件夹mapper中,设置mapper文件夹类型为resource,在application-dao.xml配置文件中添加图片中框选的代码对mapper文件进行扫描。问题解决。post
总结:
(1)eclipse、myeclipse、idea针对项目的文件处理方式不同。
eclipse和myeclipse中mapper.java和mapper.xml在同一目录下,直接配置扫描不会出现上述问题。
(2)注意xml文件的准确性。