@MapperScan

@MapperScan 是 MyBatis-Spring 项目中的一个注解,用于指示 Spring 扫描并注册 MyBatis 的 Mapper 接口,使得这些接口可以被自动实例化并注入到 Spring 容器中。

在使用 MyBatis 时,通常会定义 Mapper 接口来描述 SQL 操作,而实际的 SQL 语句和参数映射是通过 XML 文件完成的。@MapperScan 注解的作用是告诉 Spring 扫描指定的包路径,查找这些包下的 Mapper 接口,并将它们注册到 Spring 容器中。

以下是一个简单的示例,展示了如何在 Spring Boot 项目中使用 @MapperScan 注解:

在 Spring Boot 项目的入口类上使用 @MapperScan 注解,指定需要扫描的 Mapper 接口所在的包路径:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.example.mapper")  // 指定 Mapper 接口所在的包路径
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

在上面的示例中,使用了 @MapperScan 注解,通过指定包路径 “com.example.mapper”,告诉 Spring 扫描该路径下的 Mapper 接口并注册到 Spring 容器中。

创建一个 Mapper 接口,用于定义 SQL 操作:

public interface UserMapper {

    User selectUserById(Long id);

    void insertUser(User user);

    // 其他方法...
}

在上面的示例中,创建了一个 UserMapper 接口,其中定义了一些方法,用于操作用户数据。

通过在 Spring Boot 项目中使用 @MapperScan 注解,可以将 MyBatis 的 Mapper 接口自动注册到 Spring 容器中,在业务代码中直接注入和使用这些 Mapper 接口,而无需手动实例化。这样可以方便地使用 MyBatis 进行数据库操作。

参数

value(String[] 类型):用于指定一个或多个需要扫描的包路径。可以使用 value 参数来代替 basePackages 参数,效果是相同的。示例如下:

@MapperScan("com.example.mapper")

或者:

@MapperScan(value = {"com.example.mapper"})

basePackages(String[] 类型):同样用于指定一个或多个需要扫描的包路径。可以使用数组来指定多个路径。示例如下:

@MapperScan(basePackages = {"com.example.mapper"})

basePackageClasses(Class<?>[] 类型):用于指定一个或多个类,Spring 将根据这些类所在的包来进行扫描。示例如下:

@MapperScan(basePackageClasses = {UserMapper.class})

annotationClass(Class<? extends Annotation> 类型):指定一个自定义的注解类,Spring 将扫描使用该注解标记的接口。默认情况下,会扫描带有 @Mapper 注解的接口。

markerInterface(Class<?> 类型):指定一个标记接口类,Spring 将扫描实现了该标记接口的接口。

nameGenerator(Class<? extends BeanNameGenerator> 类型):指定一个自定义的 Bean 名称生成器,用于生成 Mapper 接口的 Bean 名称。

通过指定这些参数,可以灵活地配置 @MapperScan 注解,使得 Spring 能够自动扫描并注册你指定的 Mapper 接口。注意,@MapperScan 只是一个 Spring 注解,其作用是为了方便 MyBatis Mapper 接口的自动扫描和注册,以及将它们转化为 Spring Bean,从而可以在业务代码中进行注入和使用。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐