invoke方法的第一个参数proxy即拿到的代理实例
总结下自己的理解,大体上就是mybatis在运行前获取配置文件中命名空间对应的接口,并生成代理工程map集合。当用户把对应接口传入时候,从工厂集合中找到对应的代理工厂,从代理工厂中生成代理类的实例返回给用户调用。
而代理类里面实现接口方法是靠一个很巧妙的方法,他先获取调用方法名和类名,把类名+方法名就是对应配置文件里面的对应sql语句。然后代理方法就判断这个sql是什么类型的(查找、增加、删除),并用sqlSession对应方法调用该sql语句,最后把返回值返回给用户。
过程过程啊
Mybatis获取动态代理过程