在上一篇博客中  Mybatis接口编程原理分析(一)中我们介绍了MapperProxyFactory和Mapper
原创 2022-08-25 17:17:50
50阅读
Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder; 工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory; ...
转载 2021-08-07 08:39:43
60阅读
Mybatis至少遇到了以下的设计模式的使用: Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder; 工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory; ...
转载 2022-03-02 15:43:03
20阅读
一切的执行从MapperProxy开始,MapperProxy是MapperProxyFactory使用SqlSession创建出来的。所以MapperProxy中包含SqlSession。执行过程如下可以看到MapperProxy调用invoke方法,进而调用MapperMethod的execute(),这些MapperMethod就是和你要执行的命令相关,比如执行select语句,则会通过Sq
转载 2月前
57阅读
1初步:MyBatis初始化完后,org.apache.ibatis.session.Configuration中,会有已经初始化完的数据,供后续的执行:1.1 mapperRegistryMapperRegistry的实例,有一个属性Map<Class<?>, MapperProxyFactory<?>> knownMappers:密钥:Mapper类,某种接
前面说到Java动态代理,Mybatis通过这种方式实现了我们通过getMapper方式得到的Dao接口,可以直接通过接口的没有实现的方法来执行sql。AuthUserDao mapper = session.getMapper(AuthUserDao.class);getMapper方法到底做了什么。跟踪getMapper方法,进入到 MapperProxyFactory 类的 newInsta
聊聊Mybatis的binding模块为什么我们在使用Mybatis的时候只需要写接口和xml文件就能执行sql呢?这就是Mybatis的binding模块需要做的事情了,今天我们分析一下Mybatis的binding模块,binding包下的类主要有四个MapperRegistry、MapperProxyFactory、MapperProxy和MapperMethod映射注册类MapperReg
原创 精选 2022-08-11 23:10:04
431阅读
「Mybatis源码分析之Mapper注册与绑定」讲到了Mapper如何注册到Configuration类中与MapperProxyFactory绑定的过程,我们平时的使用场景一般都配合着Spring,使用Spring意味着需要注册Bean,也就是说需要将Mapper的代理实现类注册到Spring容器中,成为Spring容器中的一个Bean。Mybatis单独使用方式如果是单独使用Mybatis,
转载 2021-06-07 08:10:37
461阅读
工厂模式(SqlSessionFactory)工作原理图:代理模式(MapperProxyFactory)代理模式分为静态和动态代理。静态代理,我们通常都很熟悉。有一个写好的代理类,实现与要代理的类的一个共同的接口,目的是为了约束也为了安全。具体不再多说。这里主要想说的是关于动态代理。我们知道静态代理若想代理多个类,实现扩展功能,那么它必须具有多个代理类分别取代理不同的实现类。这样做...
工厂模式(SqlSessionFactory)工作原理图:代理模式(MapperProxyFactory)代理模式分为静态和动态代理。静态代理,我们通常都很熟悉。有一个写好的代理类,实现与要代理的类的一个共同的接口,目的是为了约束也为了安全。具体不再多说。这里主要想说的是关于动态代理。我们知道静态代理若想代理多个类,实现扩展功能,那么它必须具有多个代理类分别取代理不同的实现类。这样做...
本文是我的MyBatis源码分析专栏中第三节的一小部分,作为试读部分,详细讲述了MyBatis是如何通过动态代理创建Dao接口的实现类的。 专栏地址:MyBatis源码分析专栏字数:14w+ 专栏目录: 文章目录SqlSession.getMapper如何设计的?动态自己码技术如何创建的实现类呢?实现类的逻辑手写Mapper接口的实现类代理源码探究MapperProxyFactory核心代码分析: