跳到主要内容

MyBatis 教程

欢迎学习 MyBatis!本教程将带你从零基础开始,全面掌握 MyBatis 持久层框架的核心知识和实战技能。

什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

核心特点

  • 灵活的 SQL 编写:支持原生 SQL,开发者可以完全控制 SQL 语句
  • 松耦合设计:SQL 语句与程序代码分离,便于维护和优化
  • 强大的映射功能:支持复杂的结果集映射,包括一对一、一对多等关联关系
  • 动态 SQL:支持根据条件动态生成 SQL 语句
  • 插件机制:提供插件接口,可以拦截核心方法进行扩展
  • 缓存支持:内置一级缓存和二级缓存,提升查询性能

MyBatis vs 其他框架

特性MyBatisHibernateJPA
SQL 控制完全控制自动生成自动生成
学习曲线较低较高中等
灵活性
性能优化容易较难中等
复杂查询支持需 HQL需 JPQL
数据库移植需修改 SQL容易容易

MyBatis 适用场景

  • 需要对 SQL 进行精细控制的场景
  • 复杂查询较多的业务系统
  • 性能要求较高的系统
  • 数据库表结构与对象模型差异较大的场景

MyBatis 核心组件

SqlSessionFactoryBuilder

用于创建 SqlSessionFactory 实例,一旦创建完成就不再需要。最佳作用域是方法作用域(局部变量)。

SqlSessionFactory

MyBatis 应用的核心,用于创建 SqlSession 实例。一旦创建就应该在应用运行期间一直存在,最佳作用域是应用作用域(单例)。

SqlSession

执行 SQL 的核心接口,提供了执行 SQL 命令的所有方法。每个线程都应该有自己独立的 SqlSession 实例,不是线程安全的,最佳作用域是请求或方法作用域。

Mapper

映射器接口,绑定映射语句。从 SqlSession 中获取,最佳作用域是方法作用域。

工作原理

执行流程说明

  1. 加载配置:SqlSessionFactoryBuilder 读取配置文件,创建 SqlSessionFactory
  2. 创建会话:SqlSessionFactory 创建 SqlSession
  3. 获取映射器:SqlSession 获取 Mapper 接口的代理对象
  4. 执行 SQL:Mapper 方法调用时,找到对应的 SQL 语句执行
  5. 结果映射:将数据库结果集映射为 Java 对象
  6. 返回结果:返回映射后的对象给调用者

应用场景

企业级应用

  • 电商系统:订单管理、库存管理
  • 金融系统:交易记录、账户管理
  • ERP 系统:企业资源管理

数据分析系统

  • 报表系统:复杂查询和数据聚合
  • 数据同步:批量数据处理

微服务架构

  • 作为服务的数据访问层
  • 与 Spring Boot 无缝集成

版本说明

本教程基于 MyBatis 3.5.x 版本编写,涵盖以下内容:

  • XML 配置和注解配置
  • 动态 SQL
  • 结果映射
  • 缓存机制
  • 插件开发

版本历史

版本发布时间重要特性
3.5.02018Java 8 支持、默认方法支持
3.5.52020性能优化、Bug 修复
3.5.102022增强的动态 SQL
3.5.152023最新稳定版

教程目录

基础入门

映射器

高级特性

知识速查

  • 速查表 - MyBatis 常用配置和语法速查

学习建议

1. 前置知识

学习 MyBatis 前需要掌握:

  • Java 基础:面向对象、集合、泛型、接口
  • JDBC 基础:了解传统 JDBC 的使用方式
  • SQL 基础:SELECT、INSERT、UPDATE、DELETE
  • Maven 基础:依赖管理

2. 学习路径

基础阶段          核心阶段          进阶阶段          实战阶段
│ │ │ │
▼ ▼ ▼ ▼
环境配置 → XML 映射器 → 动态 SQL → 项目实战
核心配置 → 注解开发 → 结果映射 → 性能优化
第一个程序 → CRUD 操作 → 缓存机制 → Spring 集成

3. 实践建议

  • 动手实践:每学一个知识点都要亲自编码验证
  • 理解原理:理解 MyBatis 的执行流程和设计思想
  • 关注 SQL:MyBatis 的核心是 SQL,要重视 SQL 优化
  • 阅读源码:理解 MyBatis 的实现原理

4. 常见误区

  • ❌ 只会用,不懂原理
  • ❌ 忽视 SQL 优化
  • ❌ 滥用动态 SQL
  • ❌ 不理解缓存机制

开发工具推荐

IDE

  • IntelliJ IDEA(推荐):提供 MyBatis 插件支持
  • Eclipse:配合 MyBatis 插件

辅助工具

  • MyBatis Log Plugin:查看完整 SQL 语句
  • MyBatisX:IDEA 插件,支持 Mapper 跳转
  • MyBatis Generator:代码生成工具

参考资源

官方资源

学习资源

准备好开始学习了吗?点击下一章开始你的 MyBatis 学习之旅!