@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就不生效了,后面我深入分析源码看下。
分类:
小的知识点
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!