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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/23472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[职场] 质量管理求职简历工作经历范文6篇 #知识分享#经验分享

质量管理求职简历工作经历范文6篇 质量管理是指确定质量方针、目标和职责,并通过质量体系中的质量策划、控制、保证和改进来使其实现的全部活动,EMBA、MBA等主流商管教育均对质量管理及其实施方法有所介绍。下面是质量管理求职简历工作经历范文6篇&…

一种用于异质结高电子迁移率晶体管(HEMTs)的紧凑型漏电流模型,其中包括双子带的二维电子气(2DEG)密度解

来源:A compact drain current model for heterostructure HEMTs including 2DEG density solution with two subbands(Solid-State Electronics 16年) 摘要 本文提出了一种针对异质结高电子迁移率晶体管(HEMTs)的二维电子气(2DEG)电荷密度…

【ARM Cache 系列文章 7.2 – ARMv8/v9 MMU 页表配置详细介绍 03 】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 表描述符 Table descriptor52-bit OA 颗粒为4KB 和16KB52-bit OA 颗粒为64KB48-bit OA 颗粒为4KB 和16KBStage 1 和 Stage 2 介绍第一阶段(Stage 1)转换的表描述符属性字段第二阶段(…

【Python】教你彻底了解Python中的并发编程

​​​​ 文章目录 一、并发编程的基本概念1. 线程(Thread)2. 进程(Process)3. 协程(Coroutine) 二、Python中的线程与进程1. 线程1.1 创建和启动线程1.2 线程同步 2. 多进程2.1 创建和启动进程2.2 进程间…

【Python数据预处理系列】掌握数据清洗技巧:如何高效使用drop()函数去除不需要的列

目录 一、准备数据 二、使用drop函数去除掉指定列 在数据分析和预处理的过程中,经常会遇到需要从数据集中移除某些列的情况。本文将引导您了解如何使用drop函数高效地去除不需要的列,帮助您提升数据处理技能,确保您的数据集只包含对分析有价…

MYSQL ORDER BY

在MySQL中,默认情况下,升序排序会将NULL值放在前面,因为在排序过程中,NULL会被视为最小值。然而,有时会要求在升序排序中需要将NULL值放在最后。 例如根据日期升序时就会出现这种问题 方案一: SELECT sor…

【PostgreSQL 小课】日志及审计 01:日志

日志及审计 01:日志 以下内容是来自于我的知识星球:《PostgreSQL 小课》专栏,有需要可以关注一下 PostgreSQL 提供了非常丰富的日志基础设施。能够检查日志是每个 DBA 的关键技能——日志提供了关于集群过去的操作、当前正在进行的操作以及发…

数据虚拟化:零数据搬运,实现全域数据的集成和自适应加速

数据虚拟化技术的兴起,与传统数据仓库体系的弊端日益显现有着密切关系。 过去,企业通常会构建数据仓库来存储与加工结构化数据。数据仓库虽然实现了数据的物理集中存储,但过于依赖大量的 ETL 工程师来支持数据的集成、准备、开发与管理。随着…

uniapp小程序src引用服务器图片时全局变量与图片路径拼接

理论上&#xff0c;应该在main.js中定义一个全局变量&#xff0c;然后在页面的<image>标签上的是src直接使用即可 main.js 页面上 看上去挺靠谱的&#xff0c;实际上小程序后台会报一个错 很明显这种方式小程序是不认的&#xff0c;这就头疼了&#xff0c;还想过另外一个…

宝藏级-LLM-文档级别向量化问答技术总结

简单且详细的目录 1.简单阶段描述2.阶段展开描述2.1.第一阶段技术:加载文档-读取文档-文本分割(Text splitter)2.1.1.加载读取文档:读取加载的文档内容,通常是将其转化为文本格式2.1.1.1.基于文档解析工具的方法2.1.1.1.1.pdf解析工具2.1.1.1.2.doc、docx解析工具2.1.1.1.3.…

Android 蓝牙概述

一、什么是蓝牙 蓝牙是一种短距离&#xff08;一般10m内&#xff09;无线通信技术。蓝牙技术允许固定和移动设备在不需要电缆的情况下进行通信和数据传输。 “蓝牙”这名称来自10世纪的丹麦国王哈拉尔德(Harald Gormsson)的外号。出身海盗家庭的哈拉尔德统一了北欧四分五裂的国…

【js】input设置focus()不生效

实现功能&#xff1a;点击添加文章标签的时候&#xff0c;输入框聚焦。 页面上&#xff0c;input输入框默认不显示&#xff0c;是display:none; 点击添加按钮后&#xff0c;input输入框才显示。 在js里面直接获取元素进行设置聚焦不成功 。 ∵ focus方法比show方法先执行。j…

docker目录挂载失败:Check if the specified host path exists and is the expected type

docker目录挂载失败&#xff1a;Check if the specified host path exists and is the expected type docker目录挂载命令&#xff0c;其目的是为了达到修改linux上的文件同步到容器上&#xff0c;从而实现修改容器的配置文件。 在docker目录挂载或启动容器时报错&#xff0c…

spring源码初始学习基础-环境

环境&#xff1a;在这里插入代码片 allprojects {repositories {maven { url file:///D:/software/repository} // 本地仓库地址&#xff0c;如果没有依次向下寻找maven { url "https://maven.aliyun.com/repository/public" }mavenLocal()mavenCentral()}buildscri…

2年JAVA今日头条3轮面试经历

面头条的时候已经是十月底了。大半个月没有面试&#xff0c;之前准备的知识点比如http状态码之类的记忆性的东西&#xff0c;早就忘光了。 二面的时候问了一堆状态码&#xff0c;全都不记得了。面试官态度很好&#xff0c;跟我说&#xff0c;你现在不记得了&#xff0c;说明你…

【Vue】组件通信

文章目录 一、组件之间如何通信二、组件关系分类三、通信解决方案四、父子通信流程五、父向子通信代码示例六、子向父通信代码示例 组件通信&#xff0c;就是指组件与组件之间的数据传递 组件的数据是独立的&#xff0c;无法直接访问其他组件的数据。想使用其他组件的数据&…

利用人工智能-智慧合同管理系统规避企业合同管理风险

随着企业业务的不断扩展&#xff0c;合同管理在企业运营中扮演着越来越重要的角色。然而&#xff0c;传统的合同管理方法往往存在效率低下、风险控制不足等问题。为了解决这些问题&#xff0c;道本科技智慧合同管理系统不仅通过合同全生命周期的管理对企业合同管理从宏观上做了…

开发uniapp 小程序时遇到的问题

1、【微信开发者工具报错】routeDone with a webviewId XXX that is not the current page 解决方案: 在app.json 中添加 “lazyCodeLoading”: “requiredComponents” uniapp的话加到manifest.json下的mp-weixin 外部链接文章&#xff1a;解决方案文章1 解决方案文章2 &qu…

SEACells:元细胞分析

元细胞是从单细胞测序数据中衍生的细胞分组&#xff0c;代表高度精细的不同细胞状态。在这里&#xff0c;作者介绍了单细胞细胞状态聚集 (SEACells)&#xff0c;这是一种用于识别元细胞的算法&#xff0c;它克服了单细胞数据的稀疏性&#xff0c;同时保留了传统细胞聚类所掩盖的…

【C++进阶】深入STL之vector:深入研究迭代器失效及拷贝问题

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;初步了解vector &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀STL之vector &#x1f4d2;1. 迭…