Mybatisplus Invalid bound statement (not found)
时间: 2025-06-14 12:19:48 浏览: 7
### 关于 MyBatisPlus 中 'Invalid bound statement (not found)' 错误的解决方案
此错误通常发生在 MyBatis 无法找到对应的 SQL 映射语句时。以下是可能导致该问题的原因以及相应的解决办法:
#### 原因分析
1. **SQL 文件未被加载**
如果 Mapper 接口中的方法没有匹配到 XML 文件中定义的 SQL 语句,则会出现此类错误。
2. **Mapper 扫描路径不正确**
Spring Boot 配置文件中可能遗漏了 `@MapperScan` 注解或者扫描路径设置有误,导致 Mapper 接口未能注册到容器中[^1]。
3. **SqlSessionFactory 类型错误**
使用的是原生 MyBatis 提供的 `SqlSessionFactory` 而非 MyBatis-Plus 自带的 `MybatisSqlSessionFactoryBean`,这可能会引发兼容性问题[^2]。
4. **XML 文件命名或位置不对**
若 XML 文件名与 Mapper 接口名称不符,或者其存储目录不在资源路径下(如 `/resources/mapper/`),也会触发此异常。
5. **Spring 上下文中 Bean 定义冲突**
当项目中有多个数据源配置时,可能存在 SqlSession 工厂实例之间的混淆情况。
---
#### 解决方案
##### 方法一:确认并修正 SqlSessionFactory 实现类
确保在自定义的 MyBatis 配置类中使用了 `MybatisSqlSessionFactoryBean` 来创建工厂对象而非普通的 `org.apache.ibatis.session.SqlSessionFactory`。
```java
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
// ...
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
return sessionFactory.getObject();
}
```
##### 方法二:验证 Mapper 接口及其映射文件的一致性
检查以下几点:
- Mapper 接口的方法签名应严格对应 XML 文件内的 `<select>`, `<insert>` 等标签 id 属性值;
- XML 文件需存放在指定包路径下,默认为 `src/main/resources/mapper/`;
- XML 文件的名字应当同接口全限定名保持一致,比如对于 `com.example.mapper.UserMapper` 应命名为 `UserMapper.xml`.
##### 方法三:启用自动扫描功能
如果采用注解方式开发,在启动类上添加 `@MapperScan(basePackages="com.example.mapper")` 或者单独声明一个全局扫描器来定位所有的 DAO 组件。
```java
@Configuration
@MapperScan("com.example.mapper")
public class MyBatisConfig {}
```
##### 方法四:排查多数据源场景下的潜在隐患
当存在主副库分离架构设计时,务必区分清楚各组连接池所关联的具体 SessionFactory 实例,并通过动态切换机制实现请求分发逻辑控制。
---
### 总结
综上所述,“Invalid bound statement (not found)” 主要源于框架内部解析不到预期的查询脚本所致。针对不同情形分别采取调整依赖版本、优化资源配置策略以及强化模块隔离措施等方式可以有效规避上述现象的发生。
阅读全文
相关推荐
















