@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还有消除“注入”的错误提示的作用。

经验分享 程序员 微信小程序 职场和发展