@Mapper,@MapperScan与@Repository区别

本文介绍了MyBatis从3.4.0开始引入的@Mapper注解,该注解使得可以直接在接口中定义SQL,编译后自动生成实现类。同时,通过@MapperScan可以在Springboot启动类中批量扫描指定包下的所有接口,生成对应的实现类,避免手动添加@Mapper。当使用@MapperScan时,需要注意避免注册不必要的接口为bean,可以通过指定annotationClass参数来解决此问题。
摘要由CSDN通过智能技术生成

从mybatis3.4.0开始加入了@Mapper注解,它可以在编译之后自动生成相应的接口实现类,不用再写如下图所示的mapper映射文件。

用@Mapper直接在接口中写 ,编译时自动生成实现类,具体写法见下图。

如果需要让多个接口都变成实现类,用@Mapper一个个添加太麻烦,这时我们在Springboot启动类添加@MapperScan,指定要扫描的mapper的包的路径,然后包下面的所有接口在编译之后都会生成相应的实现类,实现批量添加@Mapper注解。

根据百度结果,@Mapper = @MapperScan(自动扫描配置)+Repository,单独有Mapper的时候,Autowired会报错,但可以运行。

简而言之,批量用@MapperScan,单个@Mapper

注:

@MapperScan用来扫描定义包下的所有的接口,给接口都生成一个bean(经测试,即便bean已经存在,@MapperScan还是会将这些接口再注册一个bean,导致出错)。

其源码里有个annotationClass,默认值是Annotation.classs。

Class<? extends Annotation> annotationClass() default Annotation.class;

 注解如下所示加个参数,就能解决上面的问题。

@MapperScan(basePackages = "com.zhi.test", annotationClass = Mapper.class)

  经验证,一些无关的接口不再注册为一个bean。

(——引自关于MyBatis的@Mapper和@MapperScan注解的一点思考 - 玄同太子 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值