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

本文介绍了在Spring Boot项目中遇到org.apache.ibatis.binding.BindingException: Invalid bound statement错误的四种可能原因,包括mapper namespace与接口不对应、缺少mybatis配置、IDE未编译XML文件以及未正确启动自动装配。提供了相应的解决方案,如调整namespace、添加配置项、修改IDE设置以及检查启动注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

最近在写个人项目的时候,出现了org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)这个错误。尝试了很多解决方法,终于解决了这个错误。在这里总结一下,以便查阅。

二、可能的原因:

1. mapper中namespace跟接口不对应可能导致的错误

2. springboot中的application.properties或application.yml没有指定mybatis的两行配置:

application.properties:

mybatis.typeAliasesPackage=xin.suttonprog.test.entity
mybatis.mapperLocations=classpath:mapper/*.xml

application.yml:

mybatis:
  mapper-locations: classpath:mapper/xml/*.xml
  type-aliases-package: xin.suttonprog.test.entity

3. IDE没有将XML文件编译

如果你的IDE是IDEA,并且你的XML文件放置在src/main/java目录下。IDEA不会将XML文件一起编译。这个时候就要在pom文件的build标签下声明:

<build>
      <plugins>
            <!-- 省略 -->
      </plugins>
      <resources>
          <resource>
              <directory>src/main/resources</directory>
              <includes>
                  <include>**/*.yml</include>
                  <include>**/*.properties</include>
                  <include>**/*.xml</include>
                  <include>**/*.tld</include>
              </includes>
              <filtering>false</filtering>
          </resource>
          <resource>
              <directory>src/main/java</directory>
              <includes>
                  <include>**/*.yml</include>
                  <include>**/*.properties</include>
                  <include>**/*.xml</include>
                  <include>**/*.tld</include>
              </includes>
              <filtering>false</filtering>
          </resource>
      </resources>
  </build>

4. 可能你的springboot项目没有启动自动装配。

在启动类上只是加上@SpringBootConfiguration的注解,没有加上自动装配的注解。加上@SpringBootApplication就可以了。

因为@SpringBootApplication是一个组合注解:

第一个注解@SpringBootConfiguration原本是一个@Configuration,所以@SpringBootConfiguration就是表明这是一个配置类,开发者可以在这个类中(上面的IPServiceApplication)配置Bean。所以IPServiceApplication扮演的角色就像Spring中的applicationContext.xml文件的角色。

第二个注解@EnableAutoConfiguration表示表示开启自动化装配。SpringBoot中的自动化配置是非侵入式的,在任何时刻,开发者都可以使用自定义配置代替自动化配置中的某一个配置。

第三个注解@ComponentScan表示完成包的扫描,就是Spring中的功能。由于@ComponentScan注解默认扫描的类都在当前类的所在包下面,所以最好将启动类放在根包之中。

三、参考

https://blog.youkuaiyun.com/qq_35981283/article/details/78590090

https://blog.youkuaiyun.com/u012685794/article/details/51953237

《SpringBoot+Vue全栈开发实战》 -- 王松 著

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值