@Mapper 与 @MapperScan 的区别

之前一直用Mapper,后来项目中用MapperScan, 再后来一不小心两个一起用了,就出现问题了,本文讲解两个注解的作用和优先级。

1、@Mapper 作用

用在接口类上,在编译之后会生成相应的接口实现类

位置:对应的某个接口类上面 如果每个接口类 都要

@Mapper 注解,是重复而无聊的工作,解决这个问题用 @MapperScan 。

2、@MapperScan 作用

扫描指定包下所有的接口类,然后所有接口在编译之后都会生成相应的实现类

位置:是在 SpringBootApplication 启动类上面添加 。

@MapperScan 是对整个包下的所有的接口类的注解。是批量的操作。使用 @MapperScan 后,接口类 就不需要使用 @Mapper 注解。

3、各种场景

1、只使用@Mapper注解,不使用@MapperScan注解。会扫描@Mapper注解所在接口,生成动态代理类,注入到Spring容器中。

2、只使用@MapperScan注解,不使用@Mapper注解。会扫描@MapperScan注解配置的包下面的接口生成动态代理类,注入到Spring容器中。

3、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中有配置包路径,那么可以正常使用。

4、@Mapper、@MapperScan注解都使用,@Mapper接口,在@MapperScan注解中没有配置包路径,那么会报错,解决办法,就是在@MapperScan注解中配置正确路径下的包即可。

第四种场景是比较容易出错的。这个具体原因我还是不是很清楚,表面上暂时理解为@MapperScan的优先级高于@Mapper, 有了@MapperScan后,@Mapper就不生效了,后面我深入分析源码看下。

posted @   小log  阅读(1122)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示