乐途乐途
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
主页
  • 计算机基础

    • TCP/IP协议
    • Linux命令
    • HTTP协议
  • 数据库

    • SQL
    • MySQL 5.7
  • 编程语言

    • C语言
    • Python2
    • Python3
  • 数据格式

    • JSON
    • XML
  • 认证与安全

    • JWT
  • 工具

    • Markdown
  • Git

    • GitFlow
  • Quartz

    • Quartz
  • Java

    • MyBatis
    • Spring
    • Spring MVC
    • Maven 入门
    • Maven 进阶
    • Java 设计模式
  • 缓存

    • Redis
联系
阿里云
  • 学习路径
  • 第1章 MyBatis概述与快速上手

    • 本章定位
    • MyBatis简介
    • 环境搭建
    • 第一个MyBatis程序
    • SqlSessionFactoryBuilder与openSession重载
    • SqlSessionFactory与SqlSession
    • SqlSession核心方法
    • 不使用 XML 构建 SqlSessionFactory
    • Mapper接口与映射方式
    • Java API 目录结构
  • 第2章 全局配置文件详解

    • 本章定位
    • properties
    • settings
    • typeAliases
    • typeHandlers
    • objectFactory
    • plugins
    • environments
    • transactionManager
    • dataSource
    • databaseIdProvider
    • mappers
    • 日志配置
  • 第3章 SQL映射文件基础

    • 本章定位
    • select
    • insert
    • update
    • delete
    • 参数传递与占位符
    • 主键生成策略
    • resultType
    • resultMap
    • 自动映射详解
    • sql片段
    • SQL 语句构建器
  • 第4章 动态SQL

    • 本章定位
    • if
    • choose、when、otherwise
    • where
    • set
    • foreach
    • trim
    • bind
    • script 元素:在注解映射器中启用动态 SQL
    • _databaseId 与动态 SQL 的多数据库支持
    • 动态 SQL 中插入脚本语言
  • 第5章 结果映射与关联查询

    • 本章定位
    • resultMap详解
    • association
    • collection
    • discriminator
    • N+1查询问题
    • 延迟加载
  • 第6章 MyBatis注解开发

    • 本章定位
    • @Select
    • @Insert
    • @Update
    • @Delete
    • @Param
    • @Options
    • @SelectKey
    • @Results
    • @Result
    • @One
    • @Many
    • @SelectProvider
  • 第7章 缓存与性能优化

    • 本章定位
    • 一级缓存
    • 二级缓存
    • 缓存配置详解
    • 自定义缓存
    • Executor执行器类型
    • 分页插件

"小崔,配置文件不是背出来的,是分'生死线'和'锦上添花'的。先把environments和mappers搞对,其他的慢慢加。"——白歌

本章定位

一句话:本章解决"MyBatis启动时需要哪些配置、每个配置标签控制什么行为、必须配什么 vs 可以优化什么"的问题。

飞翔科技的项目进入评审阶段,李眉在测试环境发现日志打印不出来,大翔要求所有环境统一数据库配置。白歌带着小崔逐条梳理 mybatis-config.xml,把12个标签按"生死线"和"锦上添花"分类,避免新手一把抓。


学习路线图

学习顺序说明:

  1. 先攻生死线(environments / dataSource / transactionManager / mappers)→ 不配这些,MyBatis起不来
  2. 再学优化项(typeAliases / typeHandlers / plugins / settings)→ 提升开发效率和扩展性
  3. 最后看支撑配置(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映射才是血肉。骨架搭好了,该往里面填业务了。"——大翔

下一页
properties