2025-10-19 23:34:42

MyBatis 核心类详解与架构解析:从入门到源码级理解

引言

MyBatis 是一款轻量级的持久层框架,通过灵活的 SQL 映射和高效的执行机制,成为 Java 开发中的热门选择。要深入掌握 MyBatis 的工作原理,理解其核心类及其职责至关重要。本文将带你梳理 MyBatis 的关键类、初始化流程以及它们之间的协作关系,帮助你构建完整的 MyBatis 架构知识体系。

🧱 一、MyBatis 核心类概览

MyBatis 的核心类构成了其运行时的骨架,每个类都承担着特定的职责。以下是核心类的层级结构图:

复制代码

SqlSessionFactoryBuilder

SqlSessionFactory (DefaultSqlSessionFactory)

SqlSession (DefaultSqlSession)

Executor

StatementHandler

ParameterHandler / TypeHandler / ResultSetHandler

📌 二、关键类职责详解

1. SqlSessionFactoryBuilder

包路径 :org.apache.ibatis.session.SqlSessionFactoryBuilder

职责 :

使用建造者模式(Builder Pattern)构建 SqlSessionFactory。

通过加载 mybatis-config.xml 配置文件或 Java API 方式创建 Configuration 对象。

特点 :

是临时对象,通常在应用启动时使用一次后丢弃。

2. SqlSessionFactory

实现类 :DefaultSqlSessionFactory

包路径 :org.apache.ibatis.session.SqlSessionFactory

职责 :

创建 SqlSession 实例。

包含全局唯一的 Configuration 实例,管理 MyBatis 的全局配置(如数据源、事务工厂、插件等)。

特点 :

线程安全,通常在应用生命周期内只初始化一次。

3. SqlSession

实现类 :DefaultSqlSession

包路径 :org.apache.ibatis.session.SqlSession

职责 :

提供操作数据库的核心 API(如 selectList, insert, update, delete)。

是非线程安全的,每次请求应使用独立的 SqlSession 实例。

底层依赖 :

通过 Executor 执行 SQL 操作。

4. Executor

实现类 :SimpleExecutor, ReuseExecutor, BatchExecutor

包路径 :org.apache.ibatis.executor.Executor

职责 :

SQL 执行引擎的核心,负责 SQL 的实际执行及缓存管理。

支持一级缓存(本地缓存)和二级缓存(跨 SqlSession 缓存)。

特点 :

可通过拦截器(Interceptor)扩展功能(如分页、日志记录)。

5. MappedStatement

包路径 :org.apache.ibatis.mapping.MappedStatement

职责 :

封装一条 SQL 映射信息,包括 SQL 语句、参数类型、结果映射等。

每个 XML 中的