在这里插入图片描述

MyBatis-Plus(简称 MP)是一个国产的开源框架,它是 MyBatis 的增强工具,在保留 MyBatis 所有特性的基础上,增加了许多实用功能,可以显著简化数据库操作开发。下面我用通俗易懂的方式解释:


一、核心定位:MyBatis 的「超级助手」

想象一下,你原来用 MyBatis 操作数据库时:

  • 需要手动写大量 SQL
  • 每个实体类都要重复写 CRUD 方法
  • 分页查询要自己计算页码
  • 条件查询要拼接字符串

MyBatis-Plus 的作用就是帮你自动化这些重复劳动,相当于给 MyBatis 装了个智能插件,核心特点是:只做增强,不做改变(你原有的 MyBatis 配置和代码完全兼容)。


二、核心功能(超能力展示)

  1. 自动 CRUD
    只需要让 Mapper 接口继承 Base<T>,立刻获得 20+ 常用方法:

    // 传统 MyBatis 需要手写 SQL 的方法
    userMapper.insert(user);
    userMapper.selectById(1);
    userMapper.updateById(user);
    // MP 直接免费赠送!
    
  2. 条件构造器(QueryWrapper)
    用链式调用代替 SQL 拼接:

    // 查询年龄>18且姓"张"的用户
    new QueryWrapper<User>()
       .gt("age", 18)
       .likeRight("name", "张")
       .list();
    
  3. 分页插件
    两行代码搞定物理分页:

    Page<User> page = new Page<>(1, 10); // 第1页,每页10条
    userMapper.selectPage(page, queryWrapper);
    
  4. 代码生成器
    自动生成 Entity/Mapper/Service/Controller:

    AutoGenerator generator = new AutoGenerator();
    generator.setStrategy(strategyConfig);
    generator.execute(); // 一键生成全套代码
    
  5. 乐观锁插件
    解决高并发下的数据冲突:

    UPDATE user SET name=?, version=version+1 
    WHERE id=? AND version=?
    

三、举个真实场景

故事:小明的开发日常
小明用原生 MyBatis 开发用户管理模块:

  • ✅ 写 UserMapper.xml 配了 200 行 SQL
  • ✅ 实现了 insert/delete/update/select
  • 😫 产品经理新增需求:按年龄分页查询

改用 MyBatis-Plus 后:

// 1. 继承BaseMapper获得基础方法
public interface UserMapper extends BaseMapper<User> {} 

// 2. 分页查询(5行代码)
Page<User> page = new Page<>(1, 10);
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.gt("age", 18);
Page<User> result = userMapper.selectPage(page, wrapper);

👉 效果:开发时间从 2 天 → 20分钟,SQL 错误率降为 0。


四、总结

特性 原生 MyBatis MyBatis-Plus
CRUD 基础方法 手动实现 ✅ 自动生成
条件查询 拼接 SQL ✅ 链式调用
分页 手写 limit ✅ 封装分页对象
代码量 冗余 ️ 减少 80%
学习成本 较高 ️ 降低 50%

核心价值

让开发者更专注于业务逻辑,而不是重复的数据库操作

本质上,它是 Java 持久层开发的「效率加速器」,特别适合中大型项目快速迭代。


五、学习建议图谱

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐