全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-20 8 分钟 ✍️ juanwangdev

生态工具对比

MyBatis 作为一个半自动化的持久层框架,其强大的插件机制催生了一批优秀的生态工具。本文将对 MyBatis 生态中的主流工具进行全面对比,帮助开发者根据项目需求做出合理的技术选型。

生态全景图

text
MyBatis 核心
├── 代码生成
│   ├── MyBatis Generator(官方)
│   ├── mybatis-plus-generator
│   └── MyBatisX(IDEA 插件)
├── 分页
│   ├── PageHelper
│   └── MyBatis-Plus Pagination
├── 增强框架
│   ├── MyBatis-Plus
│   ├── MyBatis-Plus-Join(MPJ)
│   └── mybatis-dynamic-sql
├── 缓存
│   ├── mybatis-redis
│   ├── mybatis-ehcache
│   └── mybatis-caffeine
└── 集成
    ├── mybatis-spring
    └── mybatis-spring-boot-starter

核心工具对比

代码生成工具

特性MyBatis GeneratorMP GeneratorMyBatisX 插件
维护方Apache MyBatis 官方MyBatis-Plus 团队个人开发者
生成范围Entity + Mapper + XMLEntity + Mapper + XML + Service + ControllerEntity + Mapper + XML
模板引擎固定模板Freemarker / Velocity / 自定义IDEA 内置
自定义能力PluginAdapter 扩展自定义模板 + 策略配置有限
使用方式Maven 插件 / Java APIJava APIIDEA 右键菜单
学习成本中(XML 配置)低(链式 Java 配置)极低
适用场景需要精细控制生成逻辑快速生成全套 CRUD 代码轻量级、单文件生成

分页插件

特性PageHelperMP 分页手写拦截器
侵入性低(ThreadLocal 传参)中(需 IPage 参数)高(需手写拦截器)
多数据库20+ 种方言10+ 种方言自行实现
SQL 改写Executor 拦截改写Executor 拦截改写自行实现
COUNT 优化自动生成 / 自定义 / 关闭自动生成自行实现
结果封装PageInfoIPage自定义
适用场景原生 MyBatis 项目MyBatis-Plus 项目高度定制化需求

增强框架

特性MyBatis-PlusMyBatis-Plus-Join(MPJ)mybatis-dynamic-sql
定位MyBatis 增强工具MP 的多表 Join 扩展类型安全的动态 SQL
单表 CRUDBaseMapper 内置 17 个方法继承 MP 能力DSL 链式构建
多表查询不支持(需手写 XML)支持左连接、内连接等不支持(侧重单表 DSL)
条件构造器LambdaQueryWrapperLambdaQueryWrapper + JoinSelectStatementProvider
代码生成内置 Generator复用 MP Generator
分页内置分页插件复用 MP 分页
学习成本中(需先掌握 MP)中高(需理解 DSL)
适用场景单表为主、追求效率多表关联场景类型安全优先

缓存工具

特性mybatis-redismybatis-ehcachemybatis-caffeine
类型分布式缓存本地缓存(支持集群)纯本地缓存
共享性多节点共享Terracotta 集群共享单节点
持久化RDB / AOF磁盘溢出
性能中(网络 IO)高(内存)极高(本地内存)
维护状态官方维护社区维护社区维护
适用场景分布式部署单节点大容量单节点高性能

集成工具

特性mybatis-springmybatis-spring-boot-starterMP Boot Starter
定位Spring 集成核心Spring Boot 自动配置Spring Boot + MP 自动配置
配置方式XML / Java Configapplication.ymlapplication.yml
自动扫描需手动配置 @MapperScan自动扫描自动扫描
依赖关系基础依赖依赖 mybatis-spring依赖 mybatis-spring-boot-starter
适用场景传统 Spring 项目Spring Boot + 原生 MyBatisSpring Boot + MyBatis-Plus

选型建议

场景一:传统 CRUD 项目

推荐组合:MyBatis + PageHelper + MyBatis Generator

text
适用:以单表为主、查询条件简单的后台管理系统
优势:生态成熟、文档丰富、学习成本低

场景二:追求开发效率

推荐组合:MyBatis-Plus + MP Generator + MP 分页

text
适用:互联网项目、快速迭代、单表操作为主
优势:内置通用 CRUD、代码生成器一键生成全套代码

场景三:复杂多表查询

推荐组合:MyBatis 原生 + 手写 XML + PageHelper

text
适用:数据仓库、报表系统、多表关联复杂
优势:SQL 完全可控、性能可精确优化

场景四:多表关联 + 开发效率

推荐组合:MyBatis-Plus + Plus-Join + MP 分页

text
适用:中等复杂度查询、希望减少手写 SQL
优势:在 MP 基础上支持左连接、内连接等多表操作

场景五:分布式高并发

推荐组合:MyBatis-Plus + Redis 缓存 + MP 分页

text
适用:高并发读写、多节点部署
优势:Redis 分布式缓存 + MP 增强 CRUD

版本兼容性

工具最新稳定版本MyBatis 最低版本Spring Boot 兼容
MyBatis Generator1.4.23.5+全版本
PageHelper5.3.3 / 2.0.0 (boot)3.4.6+2.x / 3.x
MyBatis-Plus3.5.53.5+2.x / 3.x
Plus-Join1.4.83.5+(依赖 MP)2.x / 3.x
mybatis-redis1.0.03.5+全版本
mybatis-spring-boot3.0.33.5+3.x

工具依赖关系图

text
mybatis-spring-boot-starter
    └── mybatis-spring
        └── mybatis

mybatis-plus-boot-starter
    ├── mybatis-plus
    │   └── mybatis-plus-core
    │       └── mybatis
    └── mybatis-spring-boot-starter(间接依赖)

pagehelper-spring-boot-starter
    ├── pagehelper
    │   ├── jsqlparser(SQL 解析)
    │   └── mybatis(对等依赖)
    └── pagehelper-spring-boot-autoconfigure

注意:MyBatis-Plus 已内置 mybatis-spring-boot-starter 能力,无需重复引入。PageHelper 与 MP 分页同时引入时会产生拦截器冲突,需二选一。

注意事项

  1. 避免重复引入:MyBatis-Plus 已包含 mybatis-spring-boot-starter,同时引入会导致 Bean 冲突
  2. 分页插件互斥:PageHelper 与 MP 分页拦截器会同时生效,导致 SQL 被双重改写
  3. 代码生成器冲突:MBG 与 MP Generator 可同时使用,但生成的文件名需避免覆盖
  4. 缓存选型:分布式项目优先选 Redis 缓存,单节点可选 Caffeine(性能最高)
  5. 版本对齐:MyBatis-Plus 3.5.x 要求 MyBatis 3.5+,Spring Boot 3.x 需选 MP 3.5.4+

要点总结

  • MyBatis 生态围绕核心框架形成了代码生成、分页、增强、缓存、集成五大类工具
  • 代码生成:MBG 适合精细控制,MP Generator 适合快速生成全套代码
  • 分页:PageHelper 适合原生 MyBatis,MP 分页适合 MP 项目,两者不可混用
  • 增强:MyBatis-Plus 是主流选择,Plus-Join 补充多表关联能力
  • 缓存:Redis 适合分布式,Caffeine 适合单节点高性能,Ehcache 适合大容量本地缓存
  • 集成:Spring Boot 项目直接选对应 starter,传统 Spring 项目用 mybatis-spring
  • 选型核心原则:单表为主选 MP,复杂查询选原生,分布式加 Redis 缓存

存放路径:D:\git2\jwdev\articles\MYBATIS\专家\生态工具与扩展\生态工具对比.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 代码生成器定制
下一篇 → 第三方缓存集成
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库