MyBatis-Plus 能大幅简化单表 CRUD 开发,通过封装通用 SQL、支持 Lambda 语法和自动填充等功能,使开发者几乎无需编写 XML 或 SQL;需引入 Starter 依赖、配置数据源与下划线转驼峰,实体类用 @TableName、@TableId、@TableField 注解,Mapper 继承 BaseMapper,Service 层可选继承 IService 和 ServiceImpl。

MyBatis-Plus(简称 MP)在 Java 项目中能大幅简化单表 CRUD 开发,核心是通过封装通用 SQL、提供 Lambda 语法支持和自动填充等能力,让开发者几乎不用写 XML 或 SQL 就能完成基础操作。
引入依赖并配置数据源
先在 pom.xml 中添加 MyBatis-Plus Starter 和数据库驱动(如 MySQL):
- MyBatis-Plus Starter 会自动整合 MyBatis,并替代原生 mybatis-spring-boot-starter
- 确保 application.yml 中已正确配置 spring.datasource 和 mybatis-plus.configuration(如开启下划线转驼峰)
- 无需手动配置 SqlSessionFactory,MP 会自动装配;但若需自定义,可通过 @MapperScan 指定 Mapper 接口包路径
定义实体类并标注关键注解
实体类对应数据库表,用注解声明映射关系:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- @TableName("user") 显式指定表名(默认取类名转下划线)
- @TableId(type = IdType.ASSIGN_ID) 标识主键,推荐使用雪花 ID(ASSIGN_ID),避免数据库自增依赖
- @TableField(fill = FieldFill.INSERT) 用于自动填充创建时间字段,配合实现 MetaObjectHandler 类
- 普通字段无需注解,MP 默认按驼峰命名匹配列名(如 userName → user_name)
继承 BaseMapper 快速获得 CRUD 方法
Mapper 接口直接继承 BaseMapper<User>,无需编写 XML 或 SQL:
立即学习“Java免费学习笔记(深入)”;
- 内置方法如 selectById、insert、updateById、deleteById 可直接调用
- 条件构造器 QueryWrapper 或 LambdaQueryWrapper 支持链式拼接,例如:
lambdaQueryWrapper.eq(User::getStatus, 1).like(User::getName, "张") - 分页直接用 Page<User> 对象传入 selectPage,MP 自动注入分页插件(需配置 PaginationInnerInterceptor)
利用 Service 层封装业务逻辑(可选但推荐)
MP 提供 IService 和 ServiceImpl,进一步减少模板代码:
- 定义 service 接口继承 IService<User>,实现类继承 ServiceImpl<UserMapper, User>
- 即可直接使用 save、removeById、list 等方法,且支持批量操作(如 saveBatch)
- 复杂查询仍可调用 mapper 层,或在 service 中组合多个简单操作,保持职责清晰

















