解决问题:org.apache.ibatis.binding.BindingException: Invalid bound statement ,not found

在使用springboot集成mybatis时,可能会遇到这个问题。

出现这个问题的原因一般是:

  • Mapper interface和xml文件的定义对应不上(需要检查包名,namespace)

  • 函数名称等能否对应不上(需要比较细致的对比,经常就写错了一两个字母搞的很长时间找不到错误)

解决的思路一般是:

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

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

  • 检查函数名称能否对应上

  • 去掉xml文件中的中文注释

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

如果上面的检查过都没有问题,那么可以试下下面操作:

因为它可能是因为 xml文件的编译问题。

可以对比下编译前和编译后的文件。

确定是 没有将xml文件编译进去,那怎样解决呢?

  • 解决方式一:把*Mapper.xml文件放到resource文件夹下管理

  • 解决方式二:在pom.xml中的build的标签中加入以下内容:

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
        <filtering>true</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.xml</include>
            <include>**/*.properties</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

参考:https://www.jianshu.com/p/2bd1e5313b66