Spring Boot中的@Mapper与@MapperScan注解以及为什么@Autowired注解无法对这两种注解进行装配

发布时间 2023-03-22 21:08:49作者: StormArcita

1.首先了解@Mapper与@MapperScan注解

  在Spring框架中,我们就会在Mapper接口层中加入@Component注解实例化接口实现类,然后使用@Autowired进行装配;但是在SpringBoot+MyBatis的框架中,我们需要持久化Mapper接口层,又多了两种方式实例化接口实现类的方式:@Mapper和@MapperScan。

  @Mapper注解可以加到Mapper接口上,这样就可以在项目运行时实例化接口实现类。

  

  但是如果有多个接口,一个一个加就有些麻烦了,这时我们就可以使用@MapperScan注解

  在SpringApplication类中添加@MapperScan注解:

  

   属性值是你的mapper接口都放在了哪个路径中。

 2.我们实例化mapper接口后,还需要进行装配,但是发现如果使用这两种方法实例化接口,就无法使用@Autowired装配:

  

  这是因为@Autowired来源于Spring框架,而这里我们使用的是SpringBoot中的@Mapper和@MapperScan,所以会报错,推荐使用@Resource进行装配。