SpringBoot整合Mybatis遇Invalid bound statement (not found)错误求助
SpringBoot整合Mybatis出现Invalid bound statement (not found)的解决办法
问题分析
你遇到的Invalid bound statement (not found)异常,核心原因是Mybatis无法将Mapper接口方法与XML中的SQL语句绑定,结合你的配置文件来看,最直接的问题是Mybatis配置未生效,同时存在版本兼容性隐患。
具体修复步骤
1. 修复application.yml的Mybatis配置
你的application.yml中mybatis:被注释,导致所有Mybatis相关配置都未加载,Mybatis无法扫描到Mapper XML文件。修改后的配置如下:
mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.demo configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
- 添加
classpath:前缀,确保Spring能正确定位到resources/mapper下的XML文件 - 保持配置项的缩进正确,YAML语法对缩进敏感
2. 检查Mapper接口与XML的匹配性(已确认部分可跳过)
虽然你的配置中这部分看起来没问题,但仍需确认:
- XML的
namespace必须与Mapper接口的全限定类名完全一致(你的com.example.demo.mapper.UserMapper是正确的) - XML中SQL标签的
id必须与Mapper接口的方法名完全一致(你的getAll匹配) resultType使用别名时,实体类必须在type-aliases-package指定的包下(User需在com.example.demo包内)
3. 修复Mybatis与SpringBoot的版本兼容性
你使用的mybatis-spring-boot-starter:2.0.0适配SpringBoot 2.x早期版本,与当前SpringBoot 2.7.5存在兼容性问题,建议升级到适配2.7.x的版本:
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.2</version> </dependency>
验证操作
修改完成后,执行mvn clean compile重新编译项目,启动测试类,查看Mybatis的控制台日志,确认是否成功加载UserMapper.xml文件。
内容的提问来源于stack exchange,提问作者陈宇星
相关产品推荐
相关产品推荐

