Mybatis getMapper的执行过程分析

首先进入session.getMapper方法中

这里调用了Configuration对象的getMapper方法;

然后就发现其实是调用了MapperRegistry的getMapper方法,再进入;

Mybatis getMapper的执行过程分析_第1张图片

这里开始就有点熟悉了,应该是工厂模式的方法了,再次跟进;

Mybatis getMapper的执行过程分析_第2张图片

这里熟悉的动态代理就出现了,所以我们主要看下MapperProxy中的invoke方法是如何实现的

Mybatis getMapper的执行过程分析_第3张图片

在这个方法中,它执行到了最后一行mapperMethod.execute

Mybatis getMapper的执行过程分析_第4张图片

可以看到,该方法里,mybatis调用了sqlSession.insert或update,delete等方法。

 

总结

所以,如果不自己实现接口类,mybatis用动态代理帮我实现了实现类,然后再调用了相应的SqlSession方法。

有关SqlSession的方法,请看我的另外一篇文章https://blog.csdn.net/sscout/article/details/94851156。

 

 

你可能感兴趣的:(Mybatis)