三、【源码】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中的方法,然后返回结果

相关推荐
坚持就完事了6 分钟前
数据结构之树(Java实现)
java·算法
WangYaolove13146 分钟前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
Monly219 分钟前
Java:修改打包配置文件
java·开发语言
roman_日积跬步-终至千里10 分钟前
【架构设计与实现】动态数据源切换:核心代码实现手册
java
XiaoFan01218 分钟前
免密批量抓取日志并集中输出
java·linux·服务器
顾北1224 分钟前
MCP服务端开发:图片搜索助力旅游计划
java·spring boot·dubbo
我命由我1234531 分钟前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
赛姐在努力.32 分钟前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
yxc_inspire36 分钟前
Java学习第二天
java·面向对象
毕设源码-赖学姐38 分钟前
【开题答辩全过程】以 基于net超市销售管理系统为例,包含答辩的问题和答案
java