搭建springMVC+spring+mybatis maven项目,总是出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 错误。一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上。仔细检查发现namespace等 并没有写错。。。
最后发现:Intellij Idea 的包名和目录名生成机制,新建一个包com.example.wenda.dao,目录结构不是com->example->wenda->dao的四个文件夹,而是生成文件名为"com.example.wenda.dao"的一个文件夹,进而导致mybatis映射错误,此错误很难排查。所以手动在对应目录下新建好文件com,文件example,文件wenda,文件dao,并将对应配置文件移至文件dao中,问题便解决了。
此外还有几点需注意,否则也会导致该错误:
1:检查xml文件所在的package名称是否和interface对应的package名称一一对应
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称能否对应上
4:去掉xml文件中的中文注释