为啥mybatis的mapper只有接口没有实现类,但它却能工作?(全网独一份

本文通过分析MyBatis源码,揭示了Mapper接口没有实现类却能工作的原理。通过SqlSession.getMapper方法,结合动态代理,MapperProxyFactory生成了Mapper接口的动态代理对象,执行时调用MapperProxy的invoke方法,完成数据库操作。同时,文章探讨了Spring Data JPA仅需声明接口的原因,鼓励读者猜想其底层可能采用的技术。
摘要由CSDN通过智能技术生成
  • 接口测试

接口我们就用UserMapper,我们来写个代理对象。

ok,一个简单的动态代理例子送给你们,上面代码中关键生成动态代理对象的关键代码是:

  • loader: 用哪个类加载器去加载代理对象

  • interfaces:动态代理类需要实现的接口

  • h:动态代理方法在执行时,会调用h里面的invoke方法去执行

源码分析

好啦,上面该做的准备已经都准备好了,我们对mybatis的这个mapper接口大概都有些思路了,下面我们去正式验证一下,那么肯定就要去看源码了。我们只是去验证上面的mapper接口问题,所以不需要去看全部的代码,当然如果你看整个流程下来的话,会更加清晰。

论证猜想,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值