MyBatis源码系列3(解析配置文件,创建SqlSessionFactory对象)

embedded/2024/11/15 3:54:00/

创建SqlSessionFactory; 首先读取配置文件,使用构造者模式创建SqlSessionFactory对象。

  InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

创建SqlSessionFactory 时序图。
在这里插入图片描述核心:解析xml配置文件,解析的配置文件用Configuration对象保存。

解析配置文件核心步骤:

//从根节点解析
parseConfiguration(parser.evalNode("/configuration"));
private void parseConfiguration(XNode root) {try {//issue #117 read properties firstpropertiesElement(root.evalNode("properties"));//设置Properties settings = settingsAsProperties(root.evalNode("settings"));loadCustomVfs(settings);//自定义别名typeAliasesElement(root.evalNode("typeAliases"));//拦截器pluginElement(root.evalNode("plugins"));objectFactoryElement(root.evalNode("objectFactory"));objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));reflectorFactoryElement(root.evalNode("reflectorFactory"));settingsElement(settings);// read it after objectFactory and objectWrapperFactory issue #631environmentsElement(root.evalNode("environments"));databaseIdProviderElement(root.evalNode("databaseIdProvider"));//自定义数据类型转换器typeHandlerElement(root.evalNode("typeHandlers"));//解析mapper  重要mapperElement(root.evalNode("mappers"));} catch (Exception e) {throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);}}

解析顺序与配置文件中的设置信息完全一致。
在这里插入图片描述
Configuration对象几个主要的属性:
在这里插入图片描述


http://www.ppmy.cn/embedded/98615.html

相关文章

CPMF复现笔记(1):docker环境配置+数据预处理

文章来自曹云康的最新论文《Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection》,在MVTecAD-3D取得了最佳分数。代码地址:caoyunkang/CPMF: [PR] Complementary Pseudo Multimodal Feature for Point Cloud Anomaly Detection (github.com) 我的复…

vue2子组件生命周期被调用两次

目前解决办法是改成了这种写法&#xff0c;改为这种不会出现加载两次子组件生命周期的问题 <el-tabs v-model"activeName" style"margin: 0px"><el-tab-pane name"systemLogCollection"><span slot"label">{{ tabLi…

LeetCode - LCR 146- 螺旋遍历二维数组

LCR 146题 题目描述&#xff1a; 给定一个二维数组 array&#xff0c;请返回「螺旋遍历」该数组的结果。 螺旋遍历&#xff1a;从左上角开始&#xff0c;按照 向右、向下、向左、向上 的顺序 依次 提取元素&#xff0c;然后再进入内部一层重复相同的步骤&#xff0c;直到提取完…

小琳AI课堂 - AIGC在不同行业的应用潜力与未来发展深度解析

小琳AI课堂 - AIGC在不同行业的应用潜力与未来发展深度解析 大家好&#xff0c;这里是小琳AI课堂&#xff01;今天我们将深入探讨AIGC&#xff08;AI Generated Content&#xff0c;人工智能生成内容&#xff09;在不同行业中的应用潜力&#xff0c;以及其未来发展前景&#x…

k8s 安装nacos集群

需求 使用k8s部署nacos集群&#xff0c;nacos的数据主要保存在mysql中&#xff0c;因此nacos运行时不需要考虑持久化问题。 这里使用2.3.2版本 导入mysql数据 github地址&#xff1a;https://github.com/alibaba/nacos/releases 找到2.3.2版本&#xff0c;下载压缩包&#xff0…

JDK、JRE、JVM关系

JDK:Java Development Kit&#xff0c;是java开发工具包 ,开发java必备工具&#xff0c;JDKJRE开发工具集&#xff08;javac等&#xff09; JRE:Java Runtime Environment&#xff0c;是java运行时的环境&#xff0c;包含了java虚拟机jvm java基础类库&#xff0c;是使用java…

dataX从orcal数据库抽取数据插入gbase 8a数据库 与 OceanBase数据库

一&#xff1a;dataX从orcal数据库抽取数据插入gbase 8a数据库配置&#xff1a; {"job": {"setting": {"speed": {"channel": 4},"errorLimit": {"percentage": 0}},"content": [{"reader":…

Java异常捕获与处理:深入理解与实践

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…