我们先来看一个问题:
为什么使用mapper接口就能操作数据库呢?
其实也就是解析mapper文件然后通过动态代理增强,找到了session中对应的方法执行,找到了命名空间和方法名,然后通过传递参数,最终可以通过sql语句访问数据库。
1、通过将java pojo对象传到getmapper
mapperRegistry类主要是mapper接口和对应的代理对象工厂的注册中心。
2、通过MapperProxyFactory这个动态代理工厂类,new出一个代理类
3、mapperProxy类实现了jdk的动态代理接口invocationHandler,它是增强了mapper接口的实现
4、mapperMethod:封装了mapper接口中对应的方法的信息,以及对应的sql语句的信息;它是mapper接口与映射配置文件中的sql语句的桥梁。
看到了我们熟悉的sql语句了。
5、代理阶段的总体流程
代理阶段其实就是mybatis的binding模块通过代理模式实现的