MyBatis 的配置对象 Configuration 作用详解

MyBatis 核心配置综述之 Configuration详解 颓废青年,快出来挨打!点击上方“Java极客技术”,选择“设为星标”后台回复“java”,获取Java知识体系/面试必看资料资料会持续更新,已更新第四次!文章精品专栏记一... 阅读详情

org.apache.ibatis.session.Configuration 是 MyBatis 的核心配置对象,它包含了 MyBatis 运行时所需的几乎所有配置信息。可以把它理解为 MyBatis 的“大脑”或“配置中心”。在 MyBatis 的初始化过程中,会解析 XML 配置文件或通过 Java 代码构建一个 Configuration 对象,MyBatis 的其他组件(如 SqlSessionFactory、Executor、MappedStatement 等)都会依赖这个 Configuration 对象来获取配置信息和执行操作。

Configuration 对象的主要作用:

  1. 保存全局配置信息: Configuration 对象保存了 MyBatis 的全局配置信息,这些信息通常在 mybatis-config.xml 文件中配置,或者通过 Java 代码设置。 这些信息包括:

    • Properties: 外部属性配置(可以通过 <properties> 标签或 Properties 对象加载)。
    • Settings: 全局设置,控制 MyBatis 的运行时行为(例如,是否开启缓存、是否使用延迟加载、是否自动映射等)。
    • Type Aliases: 类型别名,用于简化 XML 配置文件中的类型引用。
    • Type Handlers: 类型处理器,用于处理 Java 类型与 JDBC 类型之间的转换。
    • Object Factory: 对象工厂,用于创建结果对象。
    • Plugins: 插件,用于拦截 MyBatis 的核心执行流程(例如,拦截 SQL 执行、参数设置、结果映射等)。
    • Environments: 环境配置,可以配置多个数据源环境(例如,开发环境、测试环境、生产环境)。
    • DatabaseId Provider: 数据库厂商标识,用于根据不同的数据库厂商执行不同的 SQL 语句。
    • Mappers: 映射器配置,用于加载 SQL 映射文件或 Mapper 接口。
  2. 管理 MappedStatement: Configuration 对象维护了一个 MappedStatement 的注册表(Map<String, MappedStatement>)。MappedStatement 对象代表一个 SQL 语句(select、insert、update、delete),它包含了 SQL 语句的 ID、参数类型、结果类型、SQL 语句内容等信息。Configuration 对象通过 MappedStatement 的 ID 来查找和管理 MappedStatement。

  3. 创建核心组件: Configuration 对象提供了一些方法来创建 MyBatis 的核心组件,例如:

    • newExecutor(Transaction tx, ExecutorType executorType): 创建 Executor 对象(执行器,负责执行 SQL 语句)。
    • newStatementHandler(...): 创建 StatementHandler 对象(语句处理器,负责处理 JDBC 的 Statement)。
    • newParameterHandler(...): 创建 ParameterHandler 对象(参数处理器,负责设置 SQL 语句的参数)。
    • newResultSetHandler(...): 创建 ResultSetHandler 对象(结果集处理器,负责将 ResultSet 映射为 Java 对象)。
  4. 提供配置信息的访问接口: Configuration 对象提供了一系列 getXXX() 方法,用于获取各种配置信息。例如:

    • getVariables():获取属性配置
    • isCacheEnabled(): 获取是否开启缓存。
    • isLazyLoadingEnabled(): 获取是否开启延迟加载。
    • getTypeAliasRegistry(): 获取类型别名注册表。
    • getTypeHandlerRegistry(): 获取类型处理器注册表。
    • getMappedStatement(String id): 根据 ID 获取 MappedStatement 对象。
    • getEnvironment():获取环境配置
  5. 插件机制的入口: Configuration 提供了添加和获取插件的方法 (addInterceptor(), getInterceptors()),使得插件可以拦截 MyBatis 的核心执行流程。

Configuration 对象的创建:

Configuration 对象通常由 SqlSessionFactoryBuilder 创建。SqlSessionFactoryBuilder 可以通过 XML 配置文件或 Java 代码来构建 Configuration 对象。

// 通过 XML 配置文件创建
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
Configuration configuration = sqlSessionFactory.getConfiguration();


// 通过 Java 代码创建
Configuration configuration = new Configuration();
configuration.setCacheEnabled(true); // 设置缓存
configuration.setLazyLoadingEnabled(false); // 设置延迟加载
configuration.addMapper(UserMapper.class); // 添加 Mapper 接口
// ... 其他配置 ...
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

Configuration 对象的使用 (通常不需要直接操作):

在大多数情况下,我们不需要直接操作 Configuration 对象。MyBatis 内部会使用 Configuration 对象来执行各种操作。

总结:

Configuration 对象是 MyBatis 的核心配置对象,它包含了 MyBatis 运行时所需的几乎所有配置信息,并负责管理 MappedStatement、创建核心组件、提供配置信息的访问接口以及作为插件机制的入口。

【MyBatis源码分析】configuration初始化机制详解 configuration加载解析对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍  MyBatis的初始化过程。  1. MyBatis的初始化做了什么  2. MyBatis基于XML配置文件创建Configuration对象的过程  3. 涉及到的相关设计模式一、 MyBatis的初始化做了什么任何框架的初始化,无非是加载自己运行时所需要的... 阅读详情

相关推荐

【Mybatis源码】XMLConfigBuilder构建器 - 读取XML配置初始化Configuration对象

主要介绍XMLConfigBuilder读取XML配置初始化Configuration对象的过程

Mointor 926

MyBatis -- configuration配置详解

1、configuration有什么作用? configuration管理MyBatis的配置,MyBatis的所有配置信息都存放的在configuration中。 下面我们看看configuration可配置的属性有哪些: 1.1  properties属性 实例: 这些都是外部化的,可替代的属性。其中的属性就可以再整个配置文件中使用,使用可替换的属性来实现动态配置,

Guus 1万+

【Mybatis源码】XMLConfigBuilder构建器 - 加载XML与创建Configuration对象的过程

主要介绍使用XMLConfigBuilder构建器加载XML、创建Configuration对象的过程。

Mointor 523

Mybatis主配置—Configuration

Mybatis配置信息主要分为Mybatis项目级配置信息(Configuration)和执行SQL语句的Mapper配置文件,那么什么是Mybatis项目级配置信息Configuration呐?Configuration的主要职责就是用于描述Mybatis的配置信息,其内部定义了大量用于控制Mybatis运行时行为的属性。其它组件可以通过调用Configuration对象的形式来获取配置信息。

乐只悠悠 4262

BLE透传速率调优(二)

摘要:本文分析了蓝牙协议中MDbit=1时应连续发送多包但实际只发一包的问题。通过波形分析和代码调试,发现问题的根源在于接收端出现sync error导致提前关闭接收窗口,而非发送端问题。最终通过调整RF时序参数(将rxpathdly改为13us)解决了TX到RX转换的同步问题,使连接事件能正常发送多个数据包,传输速率提升至70kb/s。文中详细记录了使用逻辑分析仪和trace宏调试的过程,揭示了CEVA芯片设计中TX中断与ACK接收的关联特性。

袁赟的博客 799

深度解析:如何通过NodeRed实现私有485协议VRF中央空调与HomeAssistant的无缝对接

本文详细介绍了如何利用NodeRed的灵活流程化编程,破解并处理VRF中央空调的私有485协议,实现与HomeAssistant的无缝本地化集成。文章从协议分析、硬件准备到NodeRed核心流程搭建、数据映射及双向通信控制,提供了一套完整的实战方案,帮助用户将非标设备深度融入智能家居生态,摆脱对厂家云服务的依赖。

weixin_29173777的博客 407

MyBatis基础配置

功能:标识配置文件的起始,所有配置信息都存放在这里。

m0_64481525的博客 1672

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 447

精通Mybatis之Configuration配置体系

前言 这次小编要给大家介绍的是Configuration配置体系,不知道大家是怎么学习源码的,如果大家是从xml加载开始学起的话,那Configuration就是第一步了,因为他是将xml解析成Configuration,然后Configuration直接或间接的创建和管理绝大多数组件包括Executor、StatementHandler、Cache、MappedStatement等等。而小编是差不多最后介绍有了前面的基础,Configuration也变得不难了。 Configuration Configu

a1032722788的博客 2389

SAP 深入理解库存

当 某个期间发生货物移动的时候,系统在更新mard数据的之前(这个表是实时更新的),会检查此笔业务过账期间和mard里对应记录的期间是否一致,也就是 看这是不是本期间第一笔移动。其二,我们不能保证这定期的作业的确定性,硬件维护、系统性能都可能使这预定的“时刻”出现偏差,如果某一次没能抓取该时刻的库存,对整个报表来说,是数据的缺失;中,当某一期间(Period)的第一项操作更新了物料数量或价值,则SAP系统会向表MBEWH写入一条记录,以第一项操作之前的余额、价格控制为标准。这对于业务数据量大的。

matinal 當冬夜漸暖 。公众号:matinal 3620

PX4实战指南:通过遥控器通道映射实现多舵机PWM精准控制

本文详细介绍了通过PX4飞控的AUX PWM接口实现遥控器通道映射控制多舵机的实战指南。内容包括硬件选型与连接、软件参数配置、通道映射方法以及常见问题排查,帮助开发者精准实现无人机舵机PWM控制,适用于云台、机械臂等扩展功能开发。

ee345的博客 304

第三篇:Configuration对象构建-1

mybatis源码 setting、properties、typeAlias

zxc_user的博客 633

《UDS协议从入门到精通》系列——图解0x85:控制DTC的设置

如何让ECU停止或恢复DTC状态位更新?有哪些注意点?图解+示例教你快速上手UDS 0x85服务!!

车载系统攻城狮 3861

MyBatis XMLConfigBuilder 是如何解析 MyBatis 配置文件的? 它读取了哪些信息? 如何将这些信息存储到 Configuration 对象中?

XPath 允许以路径的方式选择 XML 文档中的节点,使得解析器可以方便地访问和提取特定元素和属性的值。它使用 XPath 技术高效地解析 XML 文件,读取各种配置信息,并将这些信息以结构化的方式存储到。它的主要职责是从 XML 文件中读取 MyBatis 的配置信息,并将这些信息构建并存储到。在解析 XML 配置文件的过程中,会将读取到的信息通过以下方式存储到。会按照一定的顺序解析 XML 配置文件中的元素,大致顺序如下 (与。方法完成 XML 文件的解析后,会将构建好的。实例,并将配置文件的。

专注于技术分享 853

21天教你学会PCIe专栏(14)--安全性考虑

1.1 定义安全性(Security):安全性是指保护系统免受未经授权的访问、攻击和破坏,确保数据的机密性、完整性和可用性。1.2 重要性数据保护:保护敏感数据,防止数据泄露和篡改。系统防护:防止恶意攻击,确保系统的稳定性和可靠性。合规性:满足行业标准和法律法规的要求,避免法律风险。用户信任:提高用户对系统的信任度,增强市场竞争力。通过今天的学习,你应该对PCIe安全性的重要性和常见威胁有了深入的了解,掌握了实施安全措施的方法和工具,以及安全开发的最佳实践。

xiaoheshang_123的博客 850

用Virtuoso和Abstract完成gds2lef

需要用到的工具有virtuoso和abstract。 数模混合的项目通常需要模拟完成模块设计,把接去数字的pin打上label(text),数字的floorplan才能正式开始。 如果只需要简单的数字PR boundary和pin点位置,那么只使用virtuoso就够了,还想把模拟版图都转成lef就要用到abstract工具。 1.PR boundary+pin 1)在virtuoso中打开layout a) Gui操作: Create->P&R Objects->

m0_61544122的博客 8738

MyBatis 源码解析:Configuration 对象的生成与初始化

作为 MyBatis 的核心配置类,管理着框架的几乎所有运行参数。对象是核心配置的载体,它包含了所有与 MyBatis 运行相关的配置信息,如环境配置、映射器、SQL 语句缓存等。类,模拟 MyBatis 中的配置管理,随后深入解析 MyBatis 源码中。对象的生成与初始化过程,对于深入掌握 MyBatis 的工作原理非常重要。对象的生成过程,包括解析配置文件、初始化配置和验证配置。

捕风捉你 · 星桥API接入与大模型实战 1710

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Mybatis源码分析系列之第二篇:Mybatis的数据存储对象

Mybatis源码分析系列之第二篇,Mybatis当中的两大数据存储对象的介绍

七叔的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Mybatis源码分析 6】XMLConfigBuilder将Mybatis全局配置文件.xml中设置的节点提取赋给Configuration对象

mybatis的全局配置文件 mybatis的全局配置文件中引用了mybatis-3-config.dtd <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration

Elevenoo的博客 578

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

解析xml配置到Configuration中

解析xml配置到Configuration中

Leon_Jinhai_Sun的博客 372

利刃出鞘,Mybatis初始化

文章目录一、前言二、MyBatis的初始化做了什么2.1 Mybatis的初始化过程就是加载自己运行时所需要的配置信息的过程2.2 Mybatis的配置信息有哪些2.3 mybatis-config.xml与Configuration类2.4 MyBatis初始化的两种方式三、MyBatis基于XML配置文件创建Configuration对象的过程3.1 定位到Mybatis初始化的关键一句3.2 MyBatis初始化基本过程3.2.1 Mybatis初始化时序图3.2.2 Mybatis初始化四步骤3.2

毛毛的专栏 2155

《深入理解Mybatis原理》MyBatis初始化机制详解

接着上述的 MyBatis初始化基本过程讨论,当SqlSessionFactoryBuilder执行build()方法,调用了XMLConfigBuilder的parse()方法,然后返回了Configuration对象。的方法mapperElements(root.evalNode(“mappers”)), 它将解析我们配置的Mapper.xml配置文件,Mapper配置文件可以说是MyBatis的核心,MyBatis的特性和理念都体现在此Mapper的配置和设计上。那么第三句到底发生了什么。

SevenCoding的博客 1610

Mybatis初始化机制详解(一)

对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。 1.MyBatis的初始化做了什么 2. MyBatis基于XML配置文件创建Configuration对象的过程 3. 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象 4. 4. 涉及到的设计模式 一、 MyBatis的初始化做了什么 任何框架的初始化,无非是加载自己运行时所需要的配置信息。MyBat

Jay的博客 291

《深入理解mybatis原理》 Mybatis初始化机制详解

对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。   1.MyBatis的初始化做了什么   2. MyBatis基于XML配置文件创建Configuration对象的过程   3. 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSessionFactory对象   ...

u012045045的博客 482

Mybatis全局配置对象的创建流程

作者:梁飞 叩丁狼教育高级讲师。原创文章,转载请注明出处。源码分析-Mybatis全局配置对象的创建Mybatis所有的配置信息以及mapper的配置信息,全部存储于Configuration对象中,Configuration相当于Mybatis的对象实体。Configuration对象从初始创建会一直贯穿Mybatis运行的整个生命周期,为Mybatis的运行提供必要的配置信息。Mybatis全...

wolfcode_cn的博客 715
上一篇: 为什么 Java 能够实现“一次编写,到处运行”?
下一篇: Spring Boot 项目中application.yml 和 bootstrap.yml 文件的区别
冰糖心书房
博客等级 码龄15年 6014粉丝 690原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰糖心书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值