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

MyBatis 配置文件核心


MyBatis 配置文件核心标签解析

以下是针对你的笔记中的三个核心标签的详细解析,帮助你全面理解它们的用途和配置逻辑。


1. properties 标签:动态加载外部配置

功能
  • 将环境相关的配置(如数据库连接、密钥等)与 MyBatis 核心配置解耦。
  • 允许在多个环境中(开发、测试、生产)快速切换配置。
属性
属性名用途示例
resource从类路径加载配置文件resource="jdbc.properties"
url从文件系统或网络路径加载url="file:///C:/config/jdbc.properties"
配置示例
 
<!-- mybatis-config.xml --> <configuration> <!-- 加载外部配置文件 --> <properties resource="jdbc.properties" /> <environments default="dev"> <environment id="dev"> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> </configuration> 
外部配置文件内容 (jdbc.properties)
 
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC jdbc.username=root jdbc.password=123456 
易错点
  • ❌ 路径错误:resource 指向的文件不在 resources 目录中。
  • ❌ 未转义特殊字符:& 需要用 &amp; 转义(如 Redis 配置中的 &timeout=1000)。

2. settings 标签:全局行为控制

功能
  • 控制 MyBatis 的底层运行机制,如日志、缓存、驼峰映射等。
  • 需严格按照官方文档配置参数和值类型。
常用配置项
设置名称(name)作用默认值
mapUnderscoreToCamelCase数据库下划线字段(user_name)自动映射到 Java 驼峰属性(userNamefalse
cacheEnabled是否开启二级缓存true
logImpl指定日志框架实现(SLF4J、Log4J2 等)无默认
配置示例
 
<configuration> <settings> <!-- 开启驼峰自动映射 --> <setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 配置日志实现 --> <setting name="logImpl" value="SLF4J"/> </settings> </configuration> 
使用场景
  • 场景 1:数据库字段为 user_name ,Java 类属性为 userName → 需设置 mapUnderscoreToCamelCase=true,否则需手动映射。
  • 场景 2:需要精细化控制缓存 → 调整 cacheEnabled 并配合 @CacheNamespace 注解。

3. typeAliases 标签:简化类名引用

功能
  • 为 Java 类型定义短别名,避免在 XML 中反复写全类名。
子标签示例
  • 子标签 1:typeAlias(单个类定义别名)

     
    <typeAliases> <!-- alias="user" 可自定义别名 --> <typeAlias type="com.example.entity.User" alias="user" /> </typeAliases> 
  • 子标签 2:package(批量扫描包)

     
    <typeAliases> <!-- 自动注册包下的所有类,默认别名 = 类名的小写形式(如 User → user) --> <package name="com.example.entity"/> </typeAliases> 
覆盖默认别名

通过 @Alias 注解自定义别名:

 
package com.example.entity; @Alias("employee") public class User { // ... } 

整体配置示例

 
<!-- mybatis-config.xml --> <configuration> <!-- 加载外部配置 --> <properties resource="config/jdbc.properties" /> <!-- 全局设置 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 别名定义 --> <typeAliases> <package name="com.example.entity"/> </typeAliases> <!-- 环境配置 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <!-- 映射器注册 --> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration> 

总结与思考

  • 灵活性properties 让配置适应不同环境,settings 调试框架行为,typeAliases 提升代码简洁性。
  • 典型错误:配置文件路径错误、别名未被扫描到、setter/getter 缺失导致属性映射失败。
  • 附加学习:结合 @Alias 注解和 ResultMap 处理复杂映射场景。

需要通过实际项目练习这些配置的使用,才能深刻理解每个标签的“边界”(何时必须用,何时可省略)。例如:当你的实体类名和数据库表字段已经严格符合驼峰规则时,可能不需要开启 mapUnderscoreToCamelCase


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

相关文章:

  • 【HeadFirst系列之HeadFirst设计模式】第16天之生成器模式(Builder Pattern):让对象构建更优雅!
  • 传统工厂转型实录:1套WMS系统如何砍掉40%仓储成本
  • 深入Sentinel使用和源码分析
  • uniapp登录用户名在其他页面都能响应
  • 【FFmpeg之如何新增一个硬件解码器】
  • 华为OD机试-发现新词的数量(Java 2024 E卷 100分)
  • JAVA实现有趣的迷宫小游戏(附源码)
  • 【算法day2】无重复字符的最长子串 两数之和
  • YOLOv8改进SPFF-LSKA大核可分离核注意力机制
  • linux上配置免密登录
  • react中的fiber和初次渲染
  • 爬虫逆向:脱壳工具Youpk的使用详解
  • rust笔记12:rust的泛型
  • 计网学习———网络安全
  • Uniapp使用wxml-to-canvas进行动态页面转图片
  • Better-SQLite3 参数绑定详解
  • 多模态模型在做选择题时,如何设置Prompt,如何精准定位我们需要的选项
  • 装饰器模式:灵活扩展对象功能的利器
  • 如何高效使用 Mybatis-Plus 的批量操作
  • CDH下配置Flume进行配置传输日志文件