SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
mybatis提供的动态代理实现过程探究
上小节我们简单实现了mybatis的动态代理,本节我们跟进动态代理的实现
我们在上图47行的地方打上一个断点,然后debug执行程序
点击F5跟进程序
上面的sqlsession即我们创建的sqlsession args为参数,点击F5继续跟进execute函数
因为我们执行是insert方法
我们在此处按F5跟进
此处返回的为我们的User对象属性,F6下一步继续跟进
看上图返回值,是返回了我们写的方法的名称全路径,我们跟进这个方法,点击F5跟进
原来这个路径是通过我们的配置文件全路径,然后加上方法id得到的,我们F6继续跟进
点击F5进入此方法
显然这个方法是得到了addUser方法的配置信息,我们继续跟进152行
70行刷新了下缓存,继续跟进update方法
继续跟进法继续跟进doUpdate方法
doUpdate方法中定义了Statement对象,handler组装了sql语句, 跟进48行update方法
方法将satement转换为预加载preparesatement然后执行并返回受影响行数
最后程序关闭预加载
整体流程整理如下图