org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)


  同样,自己没找到问题之后百度搜索方案。问题大致意思为:mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。

  网上解决方案:

    按以下步骤一一执行:

    1:检查xml文件所在的package名称是否和interface对应的package名称一一对应

    2:检查xml文件的namespace是否和xml文件的package名称一一对应

    3:检查函数名称能否对应上

    4:去掉xml文件中的中文注释

    5:随意在xml文件中加一个空格或者空行然后保存

  但是我按照这个顺序反复排查无果,最后发现在 src/target/classes/... 目录下只有.java文件,没有与之对应的xml文件,意思是xml

文件没有编译过来。

  

 

  解决方案:

  1,直接把对应的xxxMapper.xml复制到 src/target  的.java文件同级目录下,

  

  2,在pom.xml文件的build中添加如下,注意<resource>写在<resources>里面:

  

  这样以后的xxMapper.xml文件就都会自己编译进来,运行,成功!

 

  以上情况属于xml文件在 src/main/java 里面得到解决,如果xml放在与java同级目录时,如下:

 

在mybatis和hibernate得项目中,有时会把xml放在java目录外边,但是idea也没有进行编译,这时也在pom.xml文件中配置:

再运行,成功跑起来。

 

再后来,idea创建的项目没有出现过xml未编译情况,总结发现:

  之前创建项目使用的是idea默认的maven,如图

  

 

 在这里我选择自己安装的maven,创建的项目xml都正常编译,希望可以帮到小伙伴们脱离这个问题!