zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Mybatis 中的 @Mapper, @MapperScan, @Repository,mybatis.mapper-locations 的用法与区别

mybatis 区别 用法 Repository Mapper
2023-09-11 14:19:00 时间

@Mapper

@Mapper是mybatis自身带的注解。

使用@Mapper注解的接口,可以让spring自动创建该接口实现类对象。(先和对应的mapper.xml绑定,然后生成实现类)

@MapperScan

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

@MapperScan 注解指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类。(先和对应的mapper.xml绑定,然后生成实现类)

@Repository

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

@Mapper 和 @Repository 的区别

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

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

mybatis.mapper-locations

application.yml 中有 mybatis.mapper-locations 这一项,作用是是扫描Mapper接口对应的xml文件。