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

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.lryc.cn/news/547926.html

相关文章:

  • bert模型笔记
  • 微信小程序接入deepseek
  • 推荐算法和推荐系统入门第一趴
  • unity pico开发 四 物体交互 抓取 交互层级
  • 基于深度学习的青花瓷图像检索系统开发与实现
  • uniapp 系统学习,从入门到实战(八)—— Vuex 的使用
  • Vue Hooks 深度解析:从原理到实践
  • django中序列化器serializer 的高级使用和需要注意的点
  • 靶场(二)---靶场心得小白分享
  • PHP Error处理指南
  • 视频输入设备-V4L2的开发流程简述
  • 【Manus资料合集】激活码内测渠道+《Manus Al:Agent应用的ChatGPT时刻》(附资源)
  • Mybatis集合嵌套查询,三级嵌套
  • thinkphp5.1 在fetch模版就超时
  • Dockerfile 深入浅出:从基础到进阶全解析
  • CAD2025电脑置要求
  • android App主题颜色动态更换
  • 微服务,服务治理nacos,负载均衡LOadBalancer,OpenFeign
  • 浅论数据库聚合:合理使用LambdaQueryWrapper和XML
  • FastGPT 引申:混合检索完整实例
  • Socket.IO聊天室
  • MySQL表中数据基本操作
  • 可狱可囚的爬虫系列课程 16:爬虫重试机制
  • 第十五届蓝桥杯----B组cpp----真题解析(小白版本)
  • 软考架构师笔记-数据库系统
  • Spring AI 1.0.0-M6 快速开始(一)
  • go 分布式redis锁的实现方式
  • Unity中Stack<T>用法以及删除Stack<GameObject>的方法
  • Vue进阶之Vue3源码解析(二)
  • linux的文件系统及文件类型