七天带你入门Mybatis源码第四天,MappedStatement

有了前三讲的基础,我们知道mybatis的架构,mybatis的xml解析,Configuration的解析等知识的奠基。我们今天就来深刻探讨一下MappedStatement是个啥东西,有啥作用。

我们现在来思考一下,看下这两个东西:

我们写的一个接口和这个xml的mapper文件,是怎样结合起来的?

我们只要用过mybatis,我们应该都知道mybatis有一个这样的一个流程:

我们就从源码的角度来看待这个问题吧

这个截图,我们在第三讲是有截图的,就是解析了XML之后,会得到这些参数信息,最后利用建造者模式builder出来,最后把这个MappedStatement放在Configuration中

我们可以猜测一个这个ms.getId()是什么东西?

没错,正是我们的namespace+我们接口的方法名,这样就能把我们的接口和mapper的xml关联在一起了。

我们的sqlSessionFactory就算是构建完成了,下面就要掉我们的openSession来打开我们的openSession了,进去看一看

有了SqlSession之后,我们就可以调用获取我们的Mapper了

从我们之前添加的mapper的那个map中,获取到这个mapper,最后利用jdk的动态代理,返会一个代理对象

就这样这个这个代理对象就被弄出来了,底层就用了jdk的动态代理来实现的,so easy吧

解决了这个疑惑,我们来看下MappedStatement的构建吧

我们在addMapper的时候

我们会执行parser.parse();

我们这上面几天SqlSessionFactory和SqlSession的构建,我们应该已经很熟悉了,今天我们就重点看下

BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);是怎样生成的

从configuration对象中把mapper获取到

我们之前看过,这个是一个代理对象,执行invoke方法,看下execute方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值