先讲解这两个注解是啥意思,它们之间的区别和联系。
① @Mapper是MyBatis的注解,@Repository是Spring中的注解,这些注解就是声明一个Bean。
② @Mapper注解不需要在SpringBoot启动类上配置扫描类;通过xml里面的namespace里面的接口地址,生成bean对象后注入到Service里面。
在连接数据库的接口上添加@Mapper,然后在xml中的namespace指向mapper,会生成一个动态bean,然后在servcieImpl进行动态注入。
如果不在dao的接口上添加@Mapper,可以在启动类上添加@MapperScan(""),并且指明扫描的位置
@Autowired
private Mapper mapper;
// 指定启动类
@SpringBootApplication
// Mapper映射的扫描注释,指定扫描位置
@MapperScan("com.guigu.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
③ @Repository需要配置扫描地址,然后dao层生成的bean才能被注入到Service层进行使用.
如果在dao层中加了@Repository,在spring的管理下,生成bean,在serviceImpl添加
@Autowired
private Mapper mapper;