三、【源码】Mapper XML的解析和注册使用

源码地址:https://github.com/mybatis/mybatis-3/

仓库地址:https://gitcode.net/qq_42665745/mybatis/-/tree/03-parse-mapperXML

Mapper XML的解析和注册使用

流程:

1.Resources加载MyBatis配置文件生成Reader字符流

2.SqlSessionFactoryBuilder开始引导构建SqlSessionFactory,包括两步:

  • 第一步是在XMLConfigBuilder中使用dom4j解析xml文件,将解析的SQL包装成MappedStatement对象存入Configuration中,然后因为xml的namespace和对应的Dao接口路径相同,使用namespace初始化Dao接口的映射器工厂,也存入Configuration中
  • 第二步,使用Configuration初始化SqlSessionFactory

3.使用SqlSessionFactory的openSession创建一个SqlSession,参数传入Configuration

4.sqlSession.getMapper(IUserDao.class);实际是从Configuration中拿到其映射器工厂,然后使用映射器工厂创建IUserDao的代理对象

5.userDao.queryUserInfoById("u10001");当执行方法时,实际执行的是代理类的invoke方法,在这里会根据xml的sql类型执行SqlSession中的方法,然后返回结果

相关推荐
笙枫2 分钟前
基于AI Agent框架下的能源优化调度方案和实践 |工具函数介绍(详细)
java·人工智能·能源
我命由我123453 分钟前
Android Studio - Android Studio 去除 import 的未使用的类
android·java·ide·学习·java-ee·android studio·学习方法
沛沛老爹7 分钟前
Skills高级设计模式(一):向导式工作流与模板生成
java·人工智能·设计模式·prompt·aigc·agent·web转型
程序员老徐9 分钟前
Tomcat源码分析二(Tomcat启动源码分析)
java·tomcat·firefox
BD_Marathon12 分钟前
SpringMVC——5种类型参数传递
android·java·数据库
a31582380620 分钟前
Android 大图显示策略优化显示(二)
android·java·开发语言·javascript·kotlin·glide·图片加载
黛色正浓28 分钟前
leetCode-热题100-普通数组合集(JavaScript)
java·数据结构·算法
月明长歌32 分钟前
Java多线程线程池ThreadPoolExecutor理解总结:6 个核心参数 + 4 种拒绝策略(附完整示例)
java·开发语言
找不到、了32 分钟前
JVM 跨代引用与 Card Table 机制
java·jvm
sunywz34 分钟前
【JVM】(2)java类加载机制
java·jvm·python