使用@Mapper(compentModel=spring) 报错invalid bound statement(not found)
时间: 2024-08-22 17:00:48 浏览: 57
使用mybatis-plus报错Invalid bound statement (not found)错误
你在使用MyBatis的`@Mapper`注解,并指定`componentModel=spring`时遇到了"invalid bound statement (not found)"错误,这通常意味着Spring Boot无法找到对应的SQL映射(bound statement)。
首先,确认以下几个方面:
1. **映射文件位置**:`@Mapper`注解的类需要一个对应的XML或者Java配置的Mapper接口。确保mapper.xml文件位于resources/mapper目录下,或者Java接口正确地扫描到了。
```java
@Mapper(componentModel = "spring")
public interface YourMapper {
// 方法声明...
}
```
对应的xml映射文件:
```xml
<!-- your-mapper.xml -->
<mapper resource="your-mapper.xml"/>
```
2. **命名空间与接口**:在XML中,记得给每个接口提供一个唯一的namespace(命名空间),并在`@Mapper`注解中匹配上。
```xml
<mapper namespace="com.example.yourpackage.YourMapper">
<!-- SQL mapping definitions... -->
</mapper>
```
3. **方法映射**:确保在你的Mapper接口中,每个数据库操作都有相应的映射方法。例如,如果你有一个`selectById`方法,XML里要有对应的方法名。
4. **Spring配置**:在Spring Boot的配置文件(application.properties或application.yml)中,配置了mybatis-spring-boot-starter。例如:
```properties
mybatis.spring.mapper-locations=classpath:mapper/*.xml
```
如果以上都正确,但仍然报错,可能是某个方法没有正确映射到XML或者方法名拼写错误,需要检查具体的映射方法定义。如果还有疑问,可以在Spring的`logging.level.org.apache.ibatis.session=DEBUG`设置日志级别来获取更详细的错误信息,以帮助定位问题。
阅读全文