总览:17.4K Stars · 活跃维护 · Java 生态中最火 ORM 增强工具 | 版本 v3.5.16(2026.01)
🔥 一、MyBatis-Plus 是什么?
MyBatis-Plus(简称 MP) 是 MyBatis 的一款增强工具包——它只做增强不做改变,引入 MP 不会对现有 MyBatis 项目造成任何侵入性影响。
用一句话定义:在不改动 MyBatis 的前提下,让它拥有 JPA 般的开发效率。
定位:ORM 增强工具,而非全新框架
核心哲学:「为简化而生」
当前版本:v3.5.16(2026-01-11 发布)
GitHub:⭐ 17,389 Stars · Fork 4,446
组织:baomidou(苞米豆——国内开源标杆团队)
⚡ 二、核心功能:为什么它能火?
MyBatis-Plus 提供了一整套开发提效利器,以下是最关键的 6 大核心能力:
🎯 2.1 代码生成器(AutoGenerator)
业内公认最强悍的代码生成器,根据数据库表一键生成:
Entity(实体类) → Mapper(数据访问层)
→ Service / ServiceImpl(业务层)
→ Controller(控制层) → DTO / VO✅ 支持自定义模板引擎(Velocity / Freemarker / Beetl)
✅ 支持策略配置(Lombok / Swagger / 字段填充 / 逻辑删除)
✅ 支持多数据源、多模块输出
配合 mybatis-plus-generator-ui(⭐ 1,978),还能Web 可视化配置生成,开发体验拉满。
🪄 2.2 条件构造器(Wrapper)
MP 最受好评的设计——用流式 API 替代手写 XML:
java
// ❌ 传统 MyBatis:需要写 XML、写 SQL
List<User> users = userMapper.selectList(
new QueryWrapper<User>()
.lambda()
.eq(User::getName, "张三")
.gt(User::getAge, 18)
.orderByDesc(User::getCreateTime)
);三种 Wrapper 形态:
🏪 2.3 分页插件(PaginationInterceptor)
直接对接各大数据库方言,一行代码实现分页:
java
// 只需传入 Page 对象,自动拦截 SQL 生成 COUNT 查询
Page<User> page = userMapper.selectPage(
new Page<>(1, 10), // 第1页,每页10条
wrapper
);
// page.getRecords() → 当前页数据
// page.getTotal() → 总记录数支持的数据库:MySQL · PostgreSQL · Oracle · SQL Server · DB2 · MariaDB · H2 · SQLite · 达梦 · 人大金仓(国产数据库全覆盖!)
🔒 2.4 内置功能增强
🎨 2.5 热加载 / 动态 SQL
无需重启即可动态刷新 Mapper XML,调试时极度舒适。
🔌 2.6 扩展插件生态
mybatis-plus-join(⭐ 1,512):支持
left join/right join连表查询mybatis-plus-generator-ui:Web UI 配置生成器
原生支持 Spring Boot 3.x + JDK 17/21
📝 三、快速上手:3 分钟跑起来
Step 1:引入依赖(Spring Boot)
xml
<!-- Maven Central 坐标,一行搞定 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.16</version>
</dependency>Step 2:定义实体
java
@Data // Lombok 自动生成 getter/setter
@TableName("sys_user") // 映射数据库表
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
}Step 3:继承 BaseMapper
java
@Mapper
public interface UserMapper extends BaseMapper<User> {
// ✅ 什么都不用写!继承后自动拥有 CRUD 方法
}Step 4:直接使用
java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void demo() {
// 插入
userMapper.insert(new User("张三", 25));
// 查全部
List<User> list = userMapper.selectList(null);
// 按条件查
User user = userMapper.selectOne(
Wrappers.lambdaQuery(User.class)
.eq(User::getName, "张三"));
}
}对比传统 MyBatis:省掉了 Mapper.xml、SQL 映射、ResultMap 三件套,代码量减少 70%。
🎬 四、主要使用场景
⚔️ 五、竞品对比:MP vs 其他方案
📊 全面对比表
💪 MyBatis-Plus 的核心优势
零侵入式增强 — 这是最大的差异化优势,老项目迁移成本几乎为 0
国内生态成熟 — 被 jeecgboot(⭐46K)、ruoyi-vue-pro(⭐37K)等顶级开源项目作为数据层标配
文档中文友好 — baomidou.com 中文文档完善,社区活跃
国产数据库支持 — 达梦、人大金仓、GaussDB 等信创场景无缝落地
⚠️ 不足与短板
🧭 六、未来发展方向
📈 趋势判断
基于 v3.5.x 版本迭代节奏(2025 年发布了 8 个版本)和社区动向,可以预见以下发展方向:
#### 🟢 确定的方向(已在路上)
Spring Boot 3.x + JDK 21 深度适配 — 拥抱虚拟线程、Record 类型
GraalVM Native Image 支持 — 云原生场景下的编译期优化
多数据源 + 分布式事务 — 分库分表场景的更强支持
代码生成器 AI 增强 — 结合大模型智能生成业务代码
#### 🟡 值得期待的方向
R2DBC 响应式支持 — 非阻塞数据库访问(目前社区已有讨论)
更好的联表体验 — 内置 join 支持,减少对插件的依赖
SQL 审计 / 慢查询分析 — 内置性能监控能力
更细粒度的缓存策略 — 二级缓存增强
#### 🔴 可能面临的挑战
MyBatis 3 官方也在持续升级,MP 的「增强」定位需要紧跟 MyBatis 版本
JPA 生态在 Spring Data 加持下持续进化
国产数据库兼容性需要长期维护成本
🏁 七、总结
┌─────────────────────────────────────────────────┐
│ MyBatis-Plus 一句话总结 │
│ │
│ 「让 MyBatis 的灵活 + JPA 的便捷 = 最佳实践」 │
│ │
│ 适合:80% 的 Java 企业级应用 │
│ 不适合:需要纯 SQL 控制的复杂数据仓库 │
│ 地位:国内 Java 开发者首选 ORM 增强方案 │
└─────────────────────────────────────────────────┘📌 一句话决策指南
MyBatis-Plus 不是银弹,但它很可能是 Java 数据访问层最舒服的那颗子弹。