跳到正文
Elaine Blog
返回

MyBatis 配置解析与核心对象

MyBatis、MySQL 与数据架构

MyBatis 的核心不是“帮你写 SQL”,而是把 SQL、参数映射、结果映射和执行策略编译成运行时对象。初学时先抓住 ConfigurationMappedStatement,比背 XML 标签更有效。

Table of contents

Open Table of contents

先运行一个最小实验

下载数据架构实验室下载,进入目录运行:

mvn -Dtest=DataArchitectureLabTest#configurationBuildsMappedStatementsAndMapperProxy test

测试使用 H2 内存数据库,不需要 Docker。它注册 OrderMapper,再用完整名称查出 MappedStatement,最后通过 Mapper 代理执行插入和查询。

四个对象各做什么

对象直白解释生命周期
Configuration整个 MyBatis 的运行时目录通常与应用同生命周期
MappedStatement一条映射语句的执行说明书配置解析时创建、只读使用
SqlSessionFactory创建数据库会话的工厂通常是单例
SqlSession一次工作单元和一级缓存边界每个请求或事务独立创建

“映射”是把 Java 值与数据库列互相转换。Mapper 注解或 XML 在启动时被解析;例如 OrderMapper.findById 会注册为 接口全名.findById。运行时不是重新解析注解,而是按这个 ID 找到 MappedStatement

从配置到调用

读取配置 → 创建 Configuration → 注册 Mapper 与插件
        → 构建 SqlSessionFactory → 打开 SqlSession
        → 创建 Mapper 动态代理 → 定位 MappedStatement → 执行 SQL

插件也保存在 Configuration 中。MyBatis 在创建 ExecutorStatementHandler 等对象时逐层包装它们,因此插件顺序会影响调用顺序。插件不是任意方法拦截器,只能拦截 MyBatis 明确开放的接口方法。

新手最容易混淆的边界

可对照 MyBatis 配置参考查看完整设置,但先用实验观察对象,再查配置项。

下一步

继续阅读06-02 MyBatis SQL 执行、缓存与结果映射,沿 Mapper 代理追到 Executor 和 JDBC。


分享这篇文章:

上一篇
Spring、Jakarta EE、Quarkus 与 Micronaut 选型
下一篇
MyBatis SQL 执行、缓存与结果映射