Mybatis配置和接口映射原理

Mybatis可以把Mapper.xml文件直接映射到对应的接口文件,调用接口方法会自动去Mapper.xml文件中找到对应的标签,这个功能就是利用java的动态代理在binding包中实现的。

一、注册Mapper

在初始化时会把获取到的Mapper接口注册到MapperRegistry,注册的时候创建一个Mapper代理工厂,这个工厂通过JDK的代理创建一个执行对象,创建代理需要的InvocationHandler为MapperProxy。

二、获取接口对象

final MapperProxyFactory<T> mapperProxyFactory =  (MapperProxyFactory<T>) knownMappers.get(type);

通过从  knownMappers 中根据接口类型取出对应的代理工厂,,创建MapperProxyFactory对象。

三、创建MapperProxy代理对象

在MapperProxyFactory 中创建MapperProxy对象。

四、调用接口方法

调用代理方法会进入到MapperProxy的public Object invoke(Object proxy, Method method, Object[] args)方法

执行execute方法,会进入到  MapperMethod 的execute() 方法:

扫描二维码关注公众号,回复: 2824959 查看本文章

最终在execute() 方法中执行sql。

猜你喜欢

转载自blog.csdn.net/qingtian211/article/details/81746011
今日推荐