美文网首页MyBatis+SpringMVC+SpringBootJava 杂谈
解决问题:org.apache.ibatis.binding.B

解决问题:org.apache.ibatis.binding.B

作者: iceman_dev | 来源:发表于2019-07-22 22:41 被阅读0次

    刚开始学习的童鞋经常会遇到这样的题:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    image.png

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

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

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

    解决的思路一般是:

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

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

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

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

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

    以上的内容都特别容易手误写错,不过可以通过一款非常棒的插件避免以上的问题:Free Mybatis plugin

    使用该插件后,点击在mapper文件中的namespace的类名,如果能点进去,则说明 namespace和interface的package名称是没问题的:

    image.png

    点击mapper文件中的这个绿色小箭头,如果能点到interface中的方法,则说明函数名称对应上了:

    image.png

    另一个场景就比较厉害了,😂😂😂😂,可能有些同学根据以上的几点,认真检查了好几遍,依然报错,要抓狂了....

    此时,一般就是xml文件的编译问题。

    编译前的文件:

    image.png

    编译后的文件:

    image.png

    阿西吧,终于找到问题,的确是没有将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>
    

    至此,该问题完美解决。撒花,🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹🌹

    相关文章

      网友评论

        本文标题:解决问题:org.apache.ibatis.binding.B

        本文链接:https://www.haomeiwen.com/subject/vxpblctx.html