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

在实际项目,搭建mybatis会爆出 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 这个错误非常的头疼,如图1,不知道为什么mybatis就是找不到对应的xml文件。博主整理了三种可能的情况,三种情况下肯定有一种能帮助到你。

 

图1.爆出错误的demo

情况一:mapper.xml没有按照传统的maven架构进行放置

传统的maven架构目录可以参考博主的另外一个博文:https://www.jianshu.com/p/477ad2e14150
如果我们的mapper.xml文件没有放置到src-main-resources下面,是不会被maven build plugin给默认扫描到的。此时需要修改启动的模块的pom文件,在build标签里面加入:

 

<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</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>
</build>

并推荐在Project Structure -> Modules中将你存放mapper的包给标注成resources

情况二:mybatis的配置信息出错

博主给出所维护的项目的配置信息供读者参考:

 

        mybatis-plus.mapper-locations=classpath*:/mapper/**Mapper.xml
        mybatis-plus.typeAliasesPackage=com.yuxun.**.entity
        mybatis-plus.defaultStatementTimeout=120
        mybatis-plus.config-locations=classpath:config/mybatis-config.xml

其中mybatis-plus.mapper-locations是写mapper编译过后的位置和名称,可以参见图2。

情况三:idea的编译问题

该种情况非常的莫名其妙,可能是内存爆满的原因导致的,idea有的时候没有编译生成相应的xml。在idea的target->classes下面没有找到相应的存在xml的文件夹,该文件夹里面有没有对应的mapper(实体名).xml文件,如图2。此时就算你采用重启idea,Invalidate caches等方式都不管用。

最正确的做法是重新编译工程,点击导航栏build下面的rebuild project。

图2,编译后找不到对应的UserMapper.xml

ps:第三种情况常常见于,本来项目好好的可以扫描到mybatis的配置的,但是加了一个方法或者某一次run起来就突然报这个错误的情况。

总结

三种解决方式是目前看到网上遇到问题小伙伴们提出来总结的。如果三种方法中的一种解决了你的问题,请给博主点个赞。如果没有解决,欢迎在评论里给博主留言,博主一定抽时间帮你解决。



作者:YukunWen
链接:https://www.jianshu.com/p/a9516bcd3cb0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值