MyBatis源码分析-5 Mapper初始化和执行原理
发布日期:2021-06-29 16:46:23 浏览次数:2 分类:技术文章

本文共 942 字,大约阅读时间需要 3 分钟。

                                                                                                                                                                                                                                                                  作者:田超凡

                                                                                                                                                                                                                                                                  版权所有,严禁复制转载

1 MyBatis容器启动时,会扫描并加载mybatis-config.xml中<mappers>元素配置的需要注册的映射器接口。mybatis-config.xml配置需要注册的映射器接口有三种配置方式:

 

(1) 基于basePackage基准包名递归扫描,读取配置的基准报名,调用configuration.addMappers()递归注册

 

调用MapperRegistry.addMappers递归注册映射文件,将包及其子包下的所有xml映射文件都扫描并加载进来

 

3 在MapperRegistry中定义了一个全局Map<Class<?>, MapperProxyFactory<?>> knownMappers来存放所有扫描到的Mapper映射器接口和对应的,根据其绑定的Mapper映射文件信息创建的MapperProxyFactory代理实例工厂,用于后续使用SqlSession创建Mapper映射器接口动态代理实例并实现动态代理业务逻辑

 

(2) 基于resource/url指定单个映射文件的classpath/URL来访问和注册对应的Mapper映射文件及其对应的Mapper映射器接口

 

首先根据配置的resource目录解析Mapper映射文件,封装为XMLMapperBuilder构造器,用于解析Mapper映射文件

 

调用XMLMapperBuilder的parse()方法来解析单个Mapper映射文件中的SQL定义

 

将已解析的Mapper映射文件目录存放到Configuration的Set<String> loadedResources中

 

通过Mapper映射文件中的namespace命名空间值加载对应的Mapper映射器接口并注册为MapperProxyFactory,存放到Map<Class<?>, MapperProxyFactory<?>> knownMappers集合中

 

(3) 基于指定Mapper映射器接口名加载对应的Mapper映射文件并建立ORM,注册Mapper映射器接口和代理实例工厂到MapperRegistry的Map<Class<?>, MapperProxyFactory<?>>中

 

转载地址:https://supertian.blog.csdn.net/article/details/112974935 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:boost::geometry::geometry_id用法的测试程序
下一篇:boost::geometry::coordinate_type用法的测试程序

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月18日 19时30分29秒