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

在这里插入图片描述

相关推荐

  1. github注册使用

    2024-06-06 16:14:07       31 阅读
  2. Spring注解:深入理解@Component注解

    2024-06-06 16:14:07       27 阅读
  3. ArrayList 解析设计思路

    2024-06-06 16:14:07       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-06 16:14:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-06 16:14:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-06 16:14:07       87 阅读
  4. Python语言-面向对象

    2024-06-06 16:14:07       96 阅读

热门阅读

  1. 134. 加油站

    2024-06-06 16:14:07       27 阅读
  2. XML读写

    2024-06-06 16:14:07       27 阅读
  3. VScode中Markdown图片尺寸大小调整

    2024-06-06 16:14:07       32 阅读
  4. vue课后习题及答案

    2024-06-06 16:14:07       29 阅读
  5. Vue+Django上传文件

    2024-06-06 16:14:07       31 阅读
  6. 596. 超过5名学生的课

    2024-06-06 16:14:07       28 阅读
  7. 【linux kernel】一文浅析linux HID核心

    2024-06-06 16:14:07       31 阅读
  8. 服务器硬件基础知识

    2024-06-06 16:14:07       27 阅读
  9. 小程序的数据驱动和vue的双向绑定有何异同

    2024-06-06 16:14:07       32 阅读
  10. 将IP添加到基础设计

    2024-06-06 16:14:07       34 阅读
  11. mac地址一样,ip不同,能ping通么?

    2024-06-06 16:14:07       28 阅读