MyBatis的配置对象Configuration作用及说明

2025-03-11 17:50

本文主要是介绍MyBatis的配置对象Configuration作用及说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对...

MyBatis配置对象Configuration作用

org.apache.ibatis.session.Configuration 是 MyBatis 的核心配置对象,它包含了 MyBatis 运行时所需的几乎所有配置信息。可以把它理解为 MyBatis 的“大脑”或“配置中心”。

在 MyBatis 的初始化过程中,会解析 XML 配置文件或通过 Java 代码构建一个 Configuration 对象,MyBatis 的其他组件(如 SqlSessionFactoryExecutorMappedStatement 等)都会依赖这个 Configuration 对象来获取配置信息和执行操作。

Configuration 对象的主要作用

保存全局配置信息: 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 接口。

管理 MappedStatement: Configuration 对象维护了一个 MappedStatement注册表Map<String, MappedStatement>)。MappedStatement 对象代表一个 SQL 语句(selectinsertupdatedelete),它包含了 SQL 语句的 ID、参数类型、结果类型、SQL 语句内容等信息。Configuration 对象通过 MappedStatement 的 ID 来查找和管理 MappedStatement

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

  • newww.chinasem.cnwExecutor(Transaction tx, ExecutorType executorType): 创建 Executor 对象(执行器,负责执行 SQL 语句)。
  • newStatementHandler(...): 创建 StatementHandler 对象(语句处理器,负责处理 JDBC 的 Statement)。
  • newparameterHandler(...): 创建 ParameterHandler 对象(参数处理器,负责设置 SQL 语句的参数)。
  • newResultSetHandler(...): 创建 ResultSetHandler 对象(结果集处理器,负责将 ResultSet 映射为 Java 对象)。

提供配置信息的访问接口: Configuration 对象提供了一系列 getXXX() 方法,用于获取各种配置信息。例如:

  • getVariables():获取属性配置
  • isCacheEnabled(): 获取是否开启缓存。
  • isLazyLoadingEnabled(): 获取是否开启延迟加载。
  • getTypeAliasRegistry(): 获取类型别名注册表。
  • getTypeHandlerRegistry(): 获取类型处理器注册表。
  • getMappedStatement(String id): 根据 ID 获取 MappedStatement 对象。
  • gejstEnvironment():获取环境配置

插件机制的入口: 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 confighttp://www.chinasem.cnuration = new Configuration();
configuration.setCacheEnabled(true); // 设置缓存
configuration.setLazyLoadingEnabled(false); // 设置延迟加载
configuration.addMapper(UserMapper.class); // 添加 Mapper 接口
// ... 其他配置 ...
SqlSessiChina编程onFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(conckzCuQifiguration);

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

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

总结

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于MyBatis的配置对象Configuration作用及说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153701

相关文章

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过