@Mapper、@MapperScan、@Repository详解
1、@Mapper注解
它可以在编译之后自动生成相应的接口实现类,不用再写如下图所示的mapper映射文件;换句话说就是可以直接在接口上写sql语句了。
用@Mapper直接在接口中写 ,编译时自动生成实现类,具体写法见下图。
2、@MapperScan
如果需要让多个接口都变成实现类,用@Mapper一个个添加太麻烦,这时我们在Springboot启动类添加@MapperScan,指定要扫描的mapper的包的路径,然后包下面的所有接口在编译之后都会生成相应的实现类,实现批量添加@Mapper注解。
根据百度结果,@Mapper = @MapperScan(自动扫描配置)+Repository(可省略)。
简而言之,批量用@MapperScan,单个@Mapper。
3、@Repository
@Repository是spring提供的注解,放在类上能够将该类注册成Bean,和@Controller作用一样。
@Repository也可以标注在dao层接口上,放在接口上本来就没有意义,spring中在mapper接口上写一个@Repository注解,只是为了标识,要想真正是这个接口被扫描,必须:
- ssm框架使用@MapperScannerConfigurer包扫描,生成对应的bean,
- 微服务框架的启动类使用@MapperScan包扫描,生成对应的bean
注:@Repository标注在接口上可以直接省略不写。
加了@MapperScan就相当于给包中的接口都加上了@Mapper,同时@Repository还有消除“注入”的错误提示的作用。