价格

项目总览

相关源文件

本页面内容基于以下源文件生成:

MyBatis-Plus 是一个强大的 MyBatis 增强工具包,旨在简化开发流程并提升开发效率。该项目在保持与原生 MyBatis 完全兼容的前提下,提供了开箱即用的特性,包括代码生成、条件查询构造器、分页插件等功能,有效节省开发时间(README.md:48-52)。其核心理念是"只做增强不做改变",这意味着引入 MyBatis-Plus 不会对现有的 MyBatis 架构产生任何影响,同时支持所有 MyBatis 原生特性(README-zh.md:36-39)。项目描述明确将其定位为"Mybatis 增强工具包",专注于简化 CRUD 操作(build.gradle:78-79)。

核心特性概览

无侵入设计与兼容性

MyBatis-Plus 采用无侵入式设计,仅在 MyBatis 基础上进行扩展,不会改变原有架构。项目仅依赖 MyBatis 和 MyBatis-Spring,启动时自动注入基本 CRUD 操作,性能损耗极小(README-zh.md:114-120)。这种设计确保了:

  • 完全兼容性:支持所有 MyBatis 原生特性
  • 自动配置:启动时自动完成基本配置
  • 开箱即用:提供直接可用的数据库操作接口

通用 CRUD 与条件构造器

项目内置通用 Mapper 和通用 Service,通过少量配置即可实现单表大部分 CRUD 操作。其强大的条件构造器支持 Lambda 风格 API,满足各类复杂查询需求(README.md:61-68)。核心功能包括:

功能模块描述关键特性
通用 Mapper内置单表 CRUD 操作零配置即可使用
通用 Service业务层通用封装支持批量操作
条件构造器灵活的 WHERE 条件构建Lambda 语法支持
主键策略多种主键生成方式支持分布式唯一 ID

插件生态与扩展能力

MyBatis-Plus 提供丰富的插件体系,包括:

  • 分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作
  • 性能分析插件:输出 SQL 语句及执行时间,帮助定位慢查询
  • 全局拦截插件:智能分析阻断全表 delete、update 操作,预防误操作
  • SQL 注入防御:内置安全防护机制(README-zh.md:126-129

代码生成器

项目配备高度可定制的代码生成器,支持通过代码或 Maven 插件快速生成 Mapper、Model、Service、Controller 层代码。支持多种模板引擎(Velocity、Freemarker、Beetl 等),提供比 MyBatis 官方 Generator 更强大的自定义配置能力(README-zh.md:123-125)。

技术栈与版本信息

核心框架版本

MyBatis-Plus 构建在成熟的技术栈之上,支持多版本的 Spring Boot 生态:

组件版本说明
JavaVERSION_21最低支持 Java 8
MyBatis3.5.19核心持久层框架
MyBatis-Spring2.1.2Spring 集成模块
Spring Boot 22.7.18传统 Spring Boot 支持
Spring Boot 33.5.9Jakarta EE 支持
Spring Boot 44.0.1下一代 Spring Boot
Spring Framework5.3.39核心容器
JUnit5.14.1测试框架

build.gradle:8-24

多数据库支持

项目支持广泛的数据库类型,构建配置中包含了主流数据库驱动:

数据库驱动支持:
├── 关系型数据库
│   ├── MySQL (mysql-connector-j:9.5.0)
│   ├── PostgreSQL (postgresql:42.7.8)
│   ├── Oracle (ojdbc8:23.7.0.25.01)
│   ├── SQL Server (sqljdbc4:4.0)
│   └── H2 (h2:2.4.240)
├── 国产数据库
│   ├── 达梦
│   └── 高斯
└── 嵌入式数据库
    ├── SQLite (sqlite-jdbc:3.51.1.0)
    └── Firebird (jaybird:5.0.10)

build.gradle:55-66

模板引擎与工具链

代码生成器支持多种模板引擎,满足不同开发偏好:

模板引擎版本用途
Velocity2.4.1代码生成模板
Freemarker2.3.33代码生成模板
Beetl3.17.0.RELEASE代码生成模板
Enjoy5.2.2代码生成模板

build.gradle:68-74

依赖引入方式

项目提供针对不同 Spring Boot 版本的依赖配置:

Spring Boot 2 环境

xml
1<dependency>
2    <groupId>com.baomidou</groupId>
3    <artifactId>mybatis-plus-boot-starter</artifactId>
4    <version>Latest Version</version>
5</dependency>

Spring Boot 3 环境

xml
1<dependency>
2    <groupId>com.baomidou</groupId>
3    <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
4    <version>Latest Version</version>
5</dependency>

Spring Boot 4 环境(3.5.13+):

xml
1<dependency>
2    <groupId>com.baomidou</groupId>
3    <artifactId>mybatis-plus-spring-boot4-starter</artifactId>
4    <version>Latest Version</version>
5</dependency>

README-zh.md:63-86

对于 JDK 11+ 环境(3.5.9+ 版本),需要额外引入 JSqlParser 依赖以支持 SQL 解析功能(README-zh.md:87-103)。

系统架构与模块设计

整体架构图

正在加载图表渲染器...

架构说明

  1. 应用层:传统的三层架构,Controller 处理请求,Service 封装业务逻辑,Mapper 负责数据访问
  2. MyBatis-Plus 核心层:提供自动配置、通用 CRUD、条件构造器和插件系统四大核心能力
  3. MyBatis 原生层:保持对 MyBatis 原生组件的兼容,通过拦截器链实现功能增强
  4. 数据源层:支持多种数据库和连接池配置

该架构体现了"只做增强不做改变"的设计理念,MyBatis-Plus 作为中间层,在不侵入 MyBatis 原生架构的前提下提供增强功能(README-zh.md:114-118)。

核心模块职责

模块职责边界入口 API关键数据结构
自动配置模块启动时注入基本 CRUD,不干预用户自定义配置@MapperScanMybatisPlusAutoConfigurationMybatisPlusProperties 配置属性
通用 CRUD 模块提供单表 CRUD,不支持多表关联查询BaseMapper&lt;T&gt;IService&lt;T&gt;实体类泛型 T、Wrapper&lt;T&gt; 条件
条件构造器模块构建 WHERE 条件,不负责 SQL 执行QueryWrapperLambdaQueryWrapperSQL 片段、参数列表
插件系统拦截 SQL 执行,不改变业务逻辑MybatisPlusInterceptorInvocation 调用链

核心数据流与调用链

查询操作数据流

正在加载图表渲染器...

数据流说明

  1. 条件构建阶段:Service 层通过 QueryWrapper 或 LambdaQueryWrapper 构建查询条件,支持链式调用和 Lambda 表达式字段映射(README.md:66-68
  2. 拦截处理阶段:SQL 执行前经过拦截器链,分页插件在此阶段重写 SQL,添加物理分页语句
  3. 执行阶段:MyBatis Executor 执行最终 SQL,处理结果集映射
  4. 返回阶段:结果沿调用链逐层返回,保持类型安全

插件拦截机制

MyBatis-Plus 的插件系统基于 MyBatis 的 Interceptor 接口实现,核心拦截点包括:

  • StatementHandler:拦截 SQL 语句准备阶段,用于分页、性能分析
  • ParameterHandler:拦截参数设置阶段,用于参数处理
  • ResultSetHandler:拦截结果集处理阶段,用于结果转换

关键调用链示例(分页查询):

Controller.list()
  → Service.page(page, wrapper)
    → BaseMapper.selectPage(page, wrapper)
      → MybatisPlusInterceptor.intercept(invocation)
        → PaginationInnerInterceptor.willDoQuery()
          → JsqlParserSupport.parse() // 解析 SQL
          → DatabaseType.getDialect() // 获取方言
          → Dialect.buildPaginationSql() // 生成分页 SQL
        → Executor.query(rewrittenSql)
          → ResultSetHandler.handleResultSets()
            → Page.setRecords(resultList)

生态资源与链接

官方资源

MyBatis-Plus 拥有完善的文档和生态资源:

资源类型链接说明
官方文档baomidou.com完整的使用指南和 API 文档
代码生成器github.com/baomidou/generator独立的代码生成器项目
示例代码github.com/baomidou/mybatis-plus-samples官方示例项目集合
优秀案例github.com/baomidou/awesome-mybatis-plus社区最佳实践展示

README.md:53-58

企业版高级特性

对于需要更高级特性的企业用户,项目提供了 Mybatis-Mate 企业版,包含更多高级功能(README.md:59)。

典型用户案例

项目已被多个知名项目采用,包括:

  • FlowLong:工作流引擎
  • Mall4j:电商系统
  • CRMEB:商城系统

README-zh.md:44-57

适用场景

MyBatis-Plus 适用于以下典型场景:

快速开发场景

  • 原型开发:通过代码生成器快速生成完整的三层架构代码
  • CRUD 密集型业务:利用通用 Mapper 和 Service 减少重复代码
  • 多表查询较少的系统:单表操作效率极高,复杂关联仍需手写 SQL

企业级应用

  • 分页需求:内置物理分页插件,无需手动编写分页逻辑
  • 多租户系统:通过插件机制实现租户隔离
  • 数据审计:自动填充创建时间、更新时间等字段

性能敏感场景

  • 慢查询分析:性能分析插件输出 SQL 执行时间
  • 全表操作防护:拦截全表 delete/update 操作
  • SQL 注入防御:内置安全机制防止 SQL 注入攻击

报告阅读路线图

正在加载图表渲染器...

推荐阅读顺序

  1. 项目总览(当前章节):建立对项目的整体认知
  2. 核心特性详解:深入了解通用 CRUD、条件构造器、插件系统等核心模块
  3. 架构设计:理解 MyBatis-Plus 如何在 MyBatis 基础上实现增强
  4. 数据流分析:掌握运行时 SQL 执行流程和拦截机制
  5. API 设计:学习具体接口的使用方法和最佳实践
  6. 配置参考:了解各类配置项的含义和调优策略

项目核心能力量化

基于源码分析,MyBatis-Plus 的核心能力可量化如下:

维度数量/范围说明
支持 Spring Boot 版本3 个Spring Boot 2/3/4 全覆盖
支持数据库类型10+MySQL、PostgreSQL、Oracle、SQL Server、达梦、高斯等
内置插件数量5+分页、性能分析、全表操作防护、SQL 注入防御等
模板引擎支持4+Velocity、Freemarker、Beetl、Enjoy
主键生成策略4+包含分布式唯一 ID 生成器
依赖数量最小化仅依赖 MyBatis 和 MyBatis-Spring

build.gradle:8-76

技术亮点总结

MyBatis-Plus 的技术亮点可归纳为以下几个方面:

设计理念

  • 无侵入性:不改变 MyBatis 原生架构,可随时回退到原生 MyBatis
  • 最小依赖:仅依赖 MyBatis 和 MyBatis-Spring,降低版本冲突风险
  • 开箱即用:自动配置 + 通用 CRUD,零配置即可开始开发

开发效率

  • 代码生成:支持多种模板引擎,可生成完整三层架构代码
  • 通用操作:内置 Mapper 和 Service,单表 CRUD 零代码
  • Lambda 支持:类型安全的条件构造器,编译期检查字段引用

运行时能力

  • 插件机制:基于拦截器链实现分页、性能分析、安全防护等功能
  • 多数据库支持:覆盖主流关系型数据库和国产数据库
  • 版本兼容:同时支持 Spring Boot 2/3/4,适应不同技术栈