首页 > 其他分享 >@Mapper 与 @MapperScan 的区别

@Mapper 与 @MapperScan 的区别

时间:2022-12-13 23:11:33浏览次数:36  
标签: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就不生效了,后面我深入分析源码看下。

标签:Mapper,区别,接口,MapperScan,使用,注解,接口类
From: https://www.cnblogs.com/hungryquiter/p/16980937.html

相关文章

  • Spring Boot MyBatis 通用Mapper插件集成 good
    看本文之前,请确保你已经在SpringBoot中集成MyBatis,并能正常使用。如果没有,那么请先移步做了解后,再按本文步骤操作。使用MyBatis在我们通过xml集中配置SQL,并通过创建接口Mapp......
  • 生成式网络和判别式网络的区别
    生成式与判别式区别二者的区别主要就是由于一个是***联合概率分布P(x,y)***,另一个估计***条件概率分布P(y|x)***,而生成式模型能够根据贝叶斯公式得到判别式模型也是根据公......
  • Java中ConcurrentHashMap,HashMap和HashTable区别,通过ConcurrentHashMap对key进行加锁
    一、什么是ConcurrentHashMapConcurrentHashMap和HashMap一样,是一个存放键值对的容器。使用hash算法来获取值的地址,因此时间复杂度是O(1)。查询非常快。同时,ConcurrentHash......
  • TCP 与 UDP 的区别有哪些
    什么是TCPTCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议什么是UDPUDP(UserDatagramProtocol用户......
  • 回车与换行的区别
    1、两个控制字符的介绍以前打字机中,每行后面加两个表示结束的字符。一个叫做 “回车”return(/r),告诉打字机把打印头定位在左边界 ;另一个叫做 “换行”newline(/n),告诉打......
  • TPS和QPS 区别
    1、TPS:TransactionsPerSecond,意思是每秒事务数。一个事务是指客户端向服务器发送请求然后服务器做出反应的过程,具体的事务定义,可以是一个接口、多个接口、一个业务流程......
  • eval和ast.literal_eval区别
    一、eval函数eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果。eval(expression[,globals[,locals]])参数exp......
  • 分治法与动态规划的区别
    1.分治法与动态规划主要共同点:二者都是将原问题分而治之,分解成若干个规模较小(小到很容易解决的程序)的子问题,然后将子问题的解合并,形成原问题的解。2.分治法与动态规......
  • 五年经验的前端社招被问:CPU 和 GPU 到底有啥区别?
    首先来看CPU和GPU的百科解释:CPU(CentralProcessingUnit,中央处理器):功能主要是解释计算机指令以及处理计算机软件中的数据GPU(GraphicsProcessingUnit,图形处理器;......
  • arcgis相交和spatial join的区别
     结果属性不一样? ......