当前位置: 首页 > article >正文

MyBatis 的核心配置文件是干什么的? 它的结构是怎样的? 哪些是必须配置的,哪些是可选的?

MyBatis 的核心配置文件(通常命名为 mybatis-config.xml)是 MyBatis 应用程序的入口点,它定义了 MyBatis 的全局配置信息 。

核心配置文件的作用:

  1. 配置 MyBatis 的运行时行为: 通过 <settings> 标签设置全局参数,控制 MyBatis 的各种行为,例如是否开启缓存、是否使用延迟加载、是否自动映射等。
  2. 配置数据源和事务管理器: 通过 <environments> 标签配置数据库连接信息和事务管理方式。
  3. 注册类型别名: 通过 <typeAliases> 标签为 Java 类型定义别名,简化 XML 映射文件中的类型引用。
  4. 注册类型处理器: 通过 <typeHandlers> 标签注册自定义的类型处理器,处理 Java 类型与 JDBC 类型之间的转换。
  5. 注册对象工厂: 通过 <objectFactory> 标签注册自定义的对象工厂,用于创建结果对象。
  6. 注册插件: 通过 <plugins> 标签注册插件,拦截 MyBatis 的核心执行流程。
  7. 加载映射器: 通过 <mappers> 标签加载 SQL 映射文件或 Mapper 接口,将 SQL 语句与 Java 代码关联起来。

核心配置文件的结构 (mybatis-config.xml):

<?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>

  <!-- 属性配置 (可选) -->
  <properties resource="db.properties"/>

  <!-- 全局设置 (可选) -->
  <settings>
    <setting name="cacheEnabled" value="true"/>
    <setting name="lazyLoadingEnabled" value="false"/>
    <!-- 其他设置 -->
  </settings>

  <!-- 类型别名 (可选) -->
  <typeAliases>
    <typeAlias alias="User" type="com.example.model.User"/>
    <!-- 或者使用包扫描 -->
    <!-- <package name="com.example.model"/> -->
  </typeAliases>

  <!-- 类型处理器 (可选) -->
  <typeHandlers>
    <typeHandler handler="com.example.MyTypeHandler"/>
    <!-- 或者使用包扫描 -->
    <!-- <package name="com.example.typehandler"/> -->
  </typeHandlers>
    
    <!-- 对象工厂(可选) -->
    <objectFactory type="com.example.MyObjectFactory"/>

  <!-- 插件 (可选) -->
  <plugins>
    <plugin interceptor="com.example.MyPlugin"/>
  </plugins>

  <!-- 环境配置 (必须) -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  
  <!-- 数据库厂商标识(可选)-->
  <databaseIdProvider type="DB_VENDOR">
      <property name="SQL Server" value="sqlserver"/>
      <property name="MySQL" value="mysql"/>
      <property name="Oracle" value="oracle" />
  </databaseIdProvider>

  <!-- 映射器 (必须) -->
  <mappers>
    <mapper resource="com/example/mapper/UserMapper.xml"/>
    <!-- 或者使用类路径 -->
    <!-- <mapper class="com.example.mapper.UserMapper"/> -->
    <!-- 或者使用包扫描 -->
    <!-- <package name="com.example.mapper"/> -->
  </mappers>

</configuration>

各部分配置详解:

  • <configuration>: 根元素,所有配置都包含在这个元素中。
  • <properties> (可选):
    • 用于加载外部属性文件(例如 db.properties),可以在配置文件中引用属性文件中的值。
    • resource 属性指定属性文件的路径。
    • 也可以直接在 <properties> 标签内部定义属性。
  • <settings> (可选):
    • 用于配置 MyBatis 的全局设置,控制 MyBatis 的运行时行为。
    • 常用的设置包括:
      • cacheEnabled: 是否开启二级缓存 (默认 true)。
      • lazyLoadingEnabled: 是否开启延迟加载 (默认 false)。
      • aggressiveLazyLoading: 是否开启积极的延迟加载 (默认 false,MyBatis 3.4.1 及之前版本默认为 true)。
      • multipleResultSetsEnabled: 是否允许单个语句返回多个结果集 (默认 true)。
      • useColumnLabel: 是否使用列标签代替列名 (默认 true)。
      • useGeneratedKeys: 是否允许 JDBC 支持自动生成主键 (默认 false)。
      • autoMappingBehavior: 自动映射的行为 (默认 PARTIAL,可选值:NONEPARTIALFULL)。
      • defaultExecutorType: 默认的执行器类型 (默认 SIMPLE,可选值:SIMPLEREUSEBATCH)。
      • mapUnderscoreToCamelCase: 是否开启驼峰命名自动映射 (默认 false)。
      • localCacheScope: 一级缓存的作用域(默认 SESSION,可选值 SESSIONSTATEMENT
      • jdbcTypeForNull: 当传入的参数为 null 时,使用的 JDBC 类型(默认OTHER,通常设置为 NULL)。
      • defaultStatementTimeout: 默认的语句超时时间(秒)。
  • <typeAliases> (可选):
    • 用于为 Java 类型定义别名,简化 XML 映射文件中的类型引用。
    • typeAlias 标签定义单个别名,package 标签扫描指定包下的所有类,并自动生成别名(类名首字母小写)。
  • <typeHandlers> (可选):
    • 用于注册自定义的类型处理器。
    • typeHandler 标签注册单个类型处理器,package 标签扫描指定包下的所有类型处理器。
  • <objectFactory> (可选):
    • 注册一个自定义对象工厂,MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。
  • <plugins> (可选):
    • 用于注册插件,拦截 MyBatis 的核心执行流程(例如,拦截 SQL 执行、参数设置、结果映射等)。
    • plugin 标签注册单个插件,interceptor 属性指定插件类的全限定名。
  • <environments> (必须):
    • 用于配置数据源和事务管理器。
    • default 属性指定默认的环境 ID。
    • <environment> 标签定义一个环境,id 属性是环境的唯一标识符。
    • <transactionManager> 标签配置事务管理器:
      • type="JDBC": 使用 JDBC 的事务管理机制(需要手动提交或回滚事务)。
      • type="MANAGED": 将事务管理委托给容器(例如 Spring 或 Java EE 容器)。
    • <dataSource> 标签配置数据源:
      • type="POOLED": 使用 MyBatis 内置的连接池。
      • type="UNPOOLED": 不使用连接池,每次都创建新的连接。
      • type="JNDI": 使用 JNDI 数据源。
      • <property> 标签配置数据源的属性,例如驱动类名、URL、用户名、密码等。
  • <databaseIdProvider>(可选):
    • MyBatis 可以根据不同的数据库厂商执行不同的 SQL 语句
  • <mappers> (必须):
    • 用于加载 SQL 映射文件或 Mapper 接口。
    • <mapper resource="..."/>: 加载 XML 映射文件。
    • <mapper class="..."/>: 加载 Mapper 接口(使用注解配置 SQL)。
    • <package name="..."/>: 扫描指定包下的所有 Mapper 接口或 XML 映射文件(XML 文件需要与 Mapper 接口在同一个包下,且文件名与接口名相同)。

必须配置的元素:

  • <environments>: 必须配置至少一个数据源环境,否则 MyBatis 无法连接数据库。
  • <mappers>: 必须加载至少一个 SQL 映射文件或 Mapper 接口,否则 MyBatis 无法执行 SQL 语句。

可选配置的元素:

  • <properties>
  • <settings>
  • <typeAliases>
  • <typeHandlers>
  • <objectFactory>
  • <plugins>
  • <databaseIdProvider>

http://www.kler.cn/a/582352.html

相关文章:

  • Linux进程信号二
  • Android Spinner总结
  • JavaScript性能优化实战:从瓶颈分析到高效编码策略
  • std::ranges::views::reverse, std::ranges::reverse_view
  • 【具身相关】legged_gym, isaacgym、rsl_rl关系梳理
  • 大语言模型中的归一化技术:LayerNorm与RMSNorm的深入研究
  • 在 IntelliJ IDEA 中配置 Git
  • Android控件Selector封装优化指南:高效实现动态UI效果
  • 在Keil 5中如何建立一个STM32项目
  • transformer模型介绍——大语言模型 LLMBook 学习(二)
  • 代码解读1
  • Java并发编程面试题:基础(11题)
  • 【论文阅读】多模态——CLIPasso
  • JAVA实现好看的俄罗斯方块小游戏(附源码)
  • DICOM开发者常用DICOM开源库详解
  • 【音视频】H265-NALU-AVpacket-PS-RTP(GB28181)
  • 【Godot4.3】Geometry2D总结
  • Kubernetes 中的 Secrets 配置管理
  • Django部署Filemanagement
  • 共享经济时代下,鲲鹏共享科技如何逆袭改命?