@Mapper冒红
时间: 2025-05-30 21:42:56 浏览: 13
### @Mapper 注解报红的原因及解决方法
#### 1. 缺少 MyBatis Spring Boot Starter 的依赖
如果项目中未引入 `mybatis-spring-boot-starter` 依赖,则可能导致无法识别 `@Mapper` 注解。这是因为该注解是由 MyBatis 和 Spring Boot 整合包提供的[^1]。
解决方案是在项目的 `pom.xml` 文件中添加如下依赖:
```xml
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
```
#### 2. Mapper 层未正确配置
即使引入了必要的依赖,如果没有为对应的 Mapper 接口添加 `@Mapper` 注解或者未通过其他方式声明映射器位置,Spring Boot 可能仍然无法扫描到这些接口[^2]。
对于单个 Mapper 接口,可以直接在其定义处标注 `@Mapper` 注解;而对于多个 Mapper 接口,推荐使用全局扫描的方式,在应用启动类上添加 `@MapperScan` 注解并指定包路径[^5]。
示例代码如下:
##### 方法一:单独标记每个 Mapper 接口
```java
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ProductMapper {
// 定义 SQL 映射逻辑...
}
```
##### 方法二:统一设置扫描范围
在主程序入口文件(通常是带有 `@SpringBootApplication` 注解的 Java 类)中增加以下内容:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.mapper.annotation.RegisterMapperScanner;
@SpringBootApplication
@tk.mybatis.mapper.annotation.RegisterMapperScanner("com.example.mapper") // 替换为实际包名
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
注意这里还可以替换为官方推荐的形式——即直接利用 `@MapperScan` 来完成相同功能:
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper") // 替换为实际包名
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
#### 3. IDE 配置问题
有时即便上述条件均已满足,开发工具仍可能显示错误提示(比如 IDEA 中出现红色波浪线)。这通常是因为缓存机制导致的结果不一致或者是插件支持不足引起的视觉假象[^4]。
可以尝试清理项目构建环境以及重启IDE来修复此类现象。具体操作包括但不限于执行 Maven/Gradle 的 clean install 命令、刷新外部库索引等步骤。
---
###
阅读全文
相关推荐











