• 数据接口层 @Repository 与 @Mapper都是作用于数据接口层,用于数据访问
  • 分属不同的框架 org.springframework.stereotype.Repositor和org.apache.ibatis.annotations.Mapper,从类的包路径就可以看出来,@Mapper是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注解,用于声明一个 Bean。
  • 动态加载方式不同 使用 Mybatis 有 XML 文件或者注解的两种使用方式,原理是一样的,Mybatis 需要找到对应的mapper,在编译的时候动态生成代理类,实现数据库查询功能,所以只要在数据接口类上加上@Mapper就能被动态加载。
    然后,@Repository只是为了标识,注解本身是没有作用的,需要和@MapperScan注解配合使用

注意

  • 单独使用@MapperScan也是可以的,@Repository和@MapperScan配合是非常明确了声明一个数据接口类,所以在service层注入,idea不用报错。
  • @Mapper和@MapperScan注解idea会报错,因为不在spring的bean管理中,可以安装mybatis插件,就不报错了

常用的Mybatis配置类

import org.mybatis.spring.annotation.MapperScan;

@Configuration
@MapperScan("com.study.mapper")
public class MybatisPlusConfig {

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐