当前位置: 代码网 > it编程>编程语言>Java > MyBatis的配置对象Configuration作用及说明

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

2025年03月11日 Java 我要评论
mybatis配置对象configuration作用org.apache.ibatis.session.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 的核心组件,例如:

  • newexecutor(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 对象。
  • getenvironment():获取环境配置

插件机制的入口: 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、创建核心组件、提供配置信息的访问接口以及作为插件机制的入口。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com