"小崔,配置文件不是背出来的,是分'生死线'和'锦上添花'的。先把environments和mappers搞对,其他的慢慢加。"——白歌
本章定位
一句话:本章解决"MyBatis启动时需要哪些配置、每个配置标签控制什么行为、必须配什么 vs 可以优化什么"的问题。
飞翔科技的项目进入评审阶段,李眉在测试环境发现日志打印不出来,大翔要求所有环境统一数据库配置。白歌带着小崔逐条梳理 mybatis-config.xml,把12个标签按"生死线"和"锦上添花"分类,避免新手一把抓。
学习路线图
学习顺序说明:
- 先攻生死线(environments / dataSource / transactionManager / mappers)→ 不配这些,MyBatis起不来
- 再学优化项(typeAliases / typeHandlers / plugins / settings)→ 提升开发效率和扩展性
- 最后看支撑配置(properties / objectFactory / databaseIdProvider / 日志配置)→ 解耦和排错
文件关系说明
| 文件 | 一句话角色 |
|---|---|
environments.md | 生死线核心:定义运行环境(开发/测试/生产),是配置的"容器" |
dataSource.md | 生死线核心:数据库连接池配置,决定MyBatis连哪个库、怎么连 |
transactionManager.md | 生死线核心:事务管理方式(JDBC托管 vs 容器托管) |
mappers.md | 生死线核心:告诉MyBatis去哪里找SQL映射文件或Mapper接口 |
typeAliases.md | 开发体验优化:给全限定类名起别名,让XML里写短名字 |
typeHandlers.md | 类型映射优化:Java类型与JDBC类型转换的自定义扩展点 |
plugins.md | 扩展机制:拦截Executor/StatementHandler/ResultSetHandler/ParameterHandler |
settings.md | 行为调优:缓存、延迟加载、驼峰映射等运行时开关 |
properties.md | 配置解耦:外部化数据库连接串等敏感信息,支持多环境替换 |
objectFactory.md | 高级扩展:自定义结果对象实例化方式,普通项目很少用到 |
databaseIdProvider.md | 多数据库适配:根据厂商标识切换SQL方言,为动态SQL多库支持打基础 |
日志配置.md | 排错必备:SLF4J/Log4j/Logback/STDOUT_LOGGING的集成与级别控制 |
知识图谱
核心概念关系:
environments是配置的"根节点之一",内部必须包含transactionManager+dataSource,三者共同决定"怎么连库、怎么管事务"mappers是另一个"根节点",没有它,MyBatis不知道SQL写在哪typeAliases和typeHandlers是"开发舒适度"配置,不配也能跑,配了XML更清爽plugins是"切面扩展点",分页插件、性能监控都靠它植入settings是"行为总开关",控制缓存、延迟加载、自动映射等全局策略databaseIdProvider与properties是"环境适配"配置,多数据库、多环境部署时发挥作用
与下一章的衔接
本章学完后,小崔知道MyBatis怎么启动、配置怎么组织,但SQL到底写在哪?<select>、<insert> 标签里能放什么?结果怎么映射到Java对象?
下一章《SQL映射文件基础》将解决:XML映射文件中如何编写增删改查、参数怎么传、结果怎么收、主键怎么生成、公共SQL片段怎么复用。
"配置是骨架,SQL映射才是血肉。骨架搭好了,该往里面填业务了。"——大翔