(1)可以看出所有的操作都是基于SqlSession 对象
(2)顺势找到接口SqlSession 的实现类 DefaultSqlSession,找到其中的 getMapper 方法
(3)继续进入configuration的getMapper 方法
(4)进入MapperRegistry 的 getMapper 方法
(5)继续跳转进入,到这一步就可以看出来动态代理的影子了,接下来重点看代理重写的 mapperProxy 方法,里面具体怎么实现的方法调用
(6)跟进MapperProxy ,发现非常熟悉的invoke,对于所有的方法由此转发出去,转发到 MapperMathod 具体执行SQL语句
(7)至此就到了Mybatis 跟进传递过来的信息,具体执行不同的数据库操作
所以这种方式之所以不用写 dao,是因为 Mybatis 能够自己调用数据库操作
Mybatis 基于代理实现的过程分析
最新推荐文章于 2024-08-18 22:46:40 发布