SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究

mybatis提供的动态代理实现过程探究

上小节我们简单实现了mybatis的动态代理,本节我们跟进动态代理的实现

SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
我们在上图47行的地方打上一个断点,然后debug执行程序
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
点击F5跟进程序
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
上面的sqlsession即我们创建的sqlsession   args为参数,点击F5继续跟进execute函数
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
因为我们执行是insert方法
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
我们在此处按F5跟进
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
此处返回的为我们的User对象属性,F6下一步继续跟进SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
看上图返回值,是返回了我们写的方法的名称全路径,我们跟进这个方法,点击F5跟进
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
原来这个路径是通过我们的配置文件全路径,然后加上方法id得到的,我们F6继续跟进
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究


点击F5进入此方法

SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
显然这个方法是得到了addUser方法的配置信息,我们继续跟进152行
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
70行刷新了下缓存,继续跟进update方法
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
继续跟进法继续跟进doUpdate方法
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究

doUpdate方法中定义了Statement对象,handler组装了sql语句,      跟进48行update方法
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究

方法将satement转换为预加载preparesatement然后执行并返回受影响行数

SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
最后程序关闭预加载


整体流程整理如下图


SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究