@Mapper和@MapperScan两个注解是在Spring和Mybatis结合中会使用的注解。
那这两个注解到底有什么不同的用法呢?我们来看一下
@Mapper
1.作用:在接口类上添加了@Mapper,会自动的把 @Mapper 注解的接口生成动态代理类
添加位置:接口类上面
2.在每个需要实现类的接口上都添加@Mapper注解,相对比较繁琐
@MapperScan
1.作用:配置一个或多个包路径,自动的扫描这些包路径下的类,自动的为它们生成代理类。
添加位置:是在Springboot启动类上面添加
2.@MapperScan注解后可自定义扫描包,比如@MapperScan("com.xxx.x x"),有了这个注解,可不用一个一个添加@Mapper注解
3.@MapperScan有很多属性,最常用的是:
annotationClass : 这个是基于包下面扫描所有的接口类并注册,也有指定的属性。
markInterface : 基于包下面扫描所有接口类并注册,也可以指定特殊的接口为父类。
sqlSessionTemplateRef: 在指定使用sqlSessionTemplateRef的情况下,这里有一个或多个的Spring的容器。经常我们会使用一个或多个的数据库.
sqlSessionFactoryRef : 在指定使用sqlSessionFactoryRef的情况下,这里有一个或多个的Spring的容器。经常我们会使用一个或多个的数据库.
nameGenerator : 在Spring的容器中,将使用BeanNameGenerator去命名检测到的组件。
basePackageClasses : 这是一个安全替代basePackages()作为指定组件的扫描包。包下面的所有接口都将会被扫描。
basepackages : 基于包下面的扫描MyBatis的接口。注意是,只有是接口的将会被扫描注册,如果是具体的类将会被忽略。