mybatis-plus selectList Invalid bound statement (not found):
时间: 2025-01-22 09:11:49 浏览: 105
### MyBatis-Plus 中 `selectList` 方法出现 `Invalid bound statement (not found)` 错误的解决方案
当在使用 MyBatis-Plus 的过程中遇到 `Invalid bound statement (not found)` 异常时,通常意味着框架未能正确识别或加载 SQL 映射语句。以下是几种常见的原因及其相应的解决措施:
#### 检查 Mapper 接口与 XML 文件的一致性
确保 `Mapper` 接口中定义的方法名称以及参数类型与对应的 `.xml` 配置文件内的 `<select>` 或其他标签完全匹配。如果存在不一致,则可能导致找不到绑定语句的问题[^1]。
```java
// 正确的做法是保持接口方法签名和XML中的ID相同
public interface UserMapper extends BaseMapper<User> {
@Select("SELECT * FROM user WHERE deleted=0")
List<User> selectNotDeletedUsers();
}
```
#### 确认命名空间设置无误
验证 `mapper.xml` 文件里的 `namespace` 属性是否指向了正确的 Java 类路径下的 `Mapper` 接口全限定名。任何拼写错误都会引起此类问题[^4]。
```xml
<!-- mapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
<!-- ... -->
</mapper>
```
#### 核实资源文件位置及打包方式
确认项目结构中包含了必要的映射文件,并且这些文件能够在编译后的目标目录 (`target`) 下被正确复制。对于 Maven 项目来说,可能需要调整插件配置来确保 XML 资源能够被打包进去。
```xml
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
```
#### 添加适当依赖并清理构建缓存
有时缺少某些特定版本的库也可能引发此问题;因此建议检查项目的依赖管理工具(如 Maven 或 Gradle),确保已引入最新版的 MyBatis 和 MyBatis-Plus 库。另外,在做出更改后执行一次完整的 clean build 可能有助于解决问题。
```bash
mvn clean install
```
#### 实体类注解校验
最后还需注意实体类上的注解应用情况,特别是像 `@TableId` 这样的字段级注解,它们用于指示主键列的信息。虽然这并不是直接造成上述异常的原因之一,但在调试期间仍然值得检查一遍以排除潜在隐患。
通过以上几个方面的排查工作,应该可以有效地定位并修复 `Invalid bound statement (not found)` 错误的发生根源。
阅读全文
相关推荐


















