Mybatis 中的 @Mapper, @MapperScan, @Repository 的用法于区别

发布时间 2023-04-12 13:18:12作者: 拾月凄辰

@Mapper

@Mapper是mybatis自身带的注解。

使用@Mapper可以不使用 @MapperScan 包扫描而创建dao接口实现类对象。

@MapperScan

有时候当我们有很多 mapper 接口时,就需要写很多 @Mapper 注解,这样很麻烦,有一种简便的配置化方法便是在 SpringBoot 启动类上使用 @MapperScan 注解。

@MapperScan 注解指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类。

@Repository

@Repository 是 Spring 的注解,用于声明一个 Bean。@Repository单独使用没用。可以这样理解,注解放在接口上本来就没有意义,spring 中在 mapper 接口上写一个 @Repository 注解,只是为了标识,要想真正是这个接口被扫描,必须使用 @ComponentScan 扫描注解。(启动类上的 @SpringBootApplication 注解中已经包含了 @ComponentScan 注解)

@Mapper 和 @Repository 的区别

  1. @Mapper不需要配置扫描地址,可以单独使用,如果有多个mapper文件的话,可以在项目启动类中加入@MapperScan(“mapper文件所在包”)

  2. @Repository不可以单独使用,否则会报错误,要想用,必须配置扫描地址