SpringBoot使用Mybatis时@Mapper与@MapperScan注解的区别
下文笔者讲述SpringBoot中`@Mapper`和`@MapperScan`注解的功能简介说明,如下所示
`@Mapper`和`@MapperScan`注解简介
1.`@Mapper`注解 功能 - `@Mapper`是MyBatis提供注解 用于标识一个接口是一个MyBatis的Mapper接口 - Spring Boot会自动扫描 并注册带有`@Mapper`注解接口为Spring容器中Bean 特点 - 逐个声明: 需要在每个Mapper接口上显式添加`@Mapper`注解 - 适合小型项目: 当项目中Mapper接口较少时 这种方式简单直观。 - 无需额外配置: Spring Boot会自动识别并注册这些接口 例 @Mapper public interface UserMapper { User findById(int id); } 2.`@MapperScan`注解 功能 - `@MapperScan`是MyBatis提供的注解 用于批量扫描指定包下的所有Mapper接口 并将它们注册为 Spring 容器中Bean。 - 它可以替代逐个为每个Mapper 接口添加`@Mapper`注解方式 特点 - 批量扫描: 通过指定包路径 自动扫描该包及其子包下的所有 Mapper 接口。 - 适合大型项目: 当项目中Mapper接口较多时 这种方式更加高效。 - 集中管理: 只需要在一个地方(通常是主类或配置类)声明扫描路径 便于维护 例 @SpringBootApplication @MapperScan("com.java265.mapper") // 扫描 com.java265.mapper 包下的所有 Mapper 接口 public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
`@Mapper`和`@MapperScan`注解区别
| 特性 | `@Mapper` | `@MapperScan` | |------------------------|---------------------------------------------|-------------------------------------------| | 作用范围 | 单个 Mapper 接口 | 批量扫描多个 Mapper 接口 | | 使用方式 | 在每个 Mapper 接口上显式添加注解 | 在主类或配置类中声明扫描路径 | | 适用场景 | 小型项目,Mapper 接口数量较少 | 大型项目,Mapper 接口数量较多 | | 是否需要逐个声明 | 需要 | 不需要 | | 维护成本 | 较高(每个接口都需要添加注解) | 较低(集中管理扫描路径) |
`@Mapper`和`@MapperScan`注解相关总结
- `@Mapper`: 适合小型项目 逐个声明 Mapper 接口,简单直观 - `@MapperScan`:适合大型项目 集中管理 Mapper 接口的扫描路径 减少重复声明的工作量 在实际开发中 笔者可根据项目的规模和需求选择合适的注解: 当项目中有少量 Mapper 接口, 笔者建议直接使用 `@Mapper`。 当项目中有大量 Mapper 接口, 笔者推荐使用 `@MapperScan` 来简化配置和维护。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。