跳到主要内容

MyBatis Plus 教程

欢迎学习 MyBatis Plus!本教程将带你从零基础开始,全面掌握 MyBatis Plus 框架的核心功能和实战技能。

什么是 MyBatis Plus?

MyBatis Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了通用的 CRUD 操作、强大的条件构造器、代码生成器等功能,大大减少了开发人员的工作量。

核心特性

特性说明
无侵入只做增强不做改变,引入不会对现有工程产生影响
强大的 CRUD内置通用 Mapper、Service,少量配置即可实现单表大部分 CRUD 操作
支持 Lambda通过 Lambda 表达式方便编写各类查询条件
支持主键自动生成支持多达 4 种主键策略
内置分页插件基于 MyBatis 物理分页,配置好插件后即可使用
内置代码生成器采用代码或 Maven 插件可快速生成 Mapper、Model、Service、Controller 层代码
内置性能分析插件可输出 SQL 语句及其执行时间
内置全局拦截插件提供全表 delete、update 操作智能分析阻断

MyBatis vs MyBatis Plus

对比项MyBatisMyBatis Plus
XML 配置需要编写大量 XML大部分情况无需 XML
CRUD 操作需要手写 SQL内置通用 CRUD
分页功能需要手写分页 SQL内置分页插件
代码生成无内置内置代码生成器
条件构造手写动态 SQL提供 Wrapper 条件构造器
多租户需要自己实现内置多租户支持

为什么学习 MyBatis Plus?

1. 提高开发效率

使用 MyBatis Plus 可以显著减少样板代码:

// 传统 MyBatis 需要编写
@Select("SELECT * FROM user WHERE id = #{id}")
User selectById(Long id);

@Insert("INSERT INTO user(name, age, email) VALUES(#{name}, #{age}, #{email})")
int insert(User user);

// MyBatis Plus 继承 BaseMapper 即可
public interface UserMapper extends BaseMapper<User> {
// 无需编写任何方法,自动拥有 CRUD 功能
}

2. 强大的条件构造器

复杂查询变得简单直观:

// 查询年龄大于 18 且名字包含 "张" 的用户,按年龄降序
List<User> users = userMapper.selectList(
new LambdaQueryWrapper<User>()
.gt(User::getAge, 18)
.like(User::getName, "张")
.orderByDesc(User::getAge)
);

3. 企业级应用广泛

MyBatis Plus 在国内企业中应用广泛,是 Java 后端开发的必备技能之一。

环境准备

Maven 依赖

<dependencies>
<!-- MyBatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
</dependency>

<!-- 数据库驱动(以 MySQL 为例) -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>

<!-- Lombok(可选,简化代码) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>

配置文件

# application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456

mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
id-type: auto
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0

快速开始

创建实体类:

@Data
@TableName("t_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 LocalDateTime createTime;

@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;

@TableLogic
private Integer deleted;
}

创建 Mapper 接口:

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

使用示例:

@SpringBootTest
class QuickStartTest {

@Autowired
private UserMapper userMapper;

@Test
void testInsert() {
User user = new User();
user.setName("张三");
user.setAge(25);
user.setEmail("[email protected]");

int result = userMapper.insert(user);
System.out.println("插入成功,影响行数:" + result);
System.out.println("自动生成的 ID:" + user.getId());
}

@Test
void testSelectById() {
User user = userMapper.selectById(1L);
System.out.println(user);
}

@Test
void testSelectList() {
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}

@Test
void testUpdate() {
User user = new User();
user.setId(1L);
user.setAge(26);

int result = userMapper.updateById(user);
System.out.println("更新成功,影响行数:" + result);
}

@Test
void testDelete() {
int result = userMapper.deleteById(1L);
System.out.println("删除成功,影响行数:" + result);
}
}

教程目录

本教程涵盖从入门到进阶的完整内容:

基础入门

核心功能

知识速查

学习建议

1. 前置知识

学习 MyBatis Plus 前需要掌握:

  • Java 基础:面向对象、集合框架、Lambda 表达式
  • Spring Boot:依赖注入、配置管理、自动装配
  • MyBatis 基础:了解 MyBatis 的基本概念和使用方式
  • SQL 基础:增删改查、条件查询、多表关联

2. 学习路径

基础阶段          核心阶段          进阶阶段          实战阶段
│ │ │ │
▼ ▼ ▼ ▼
环境配置 → 基础 CRUD → 代码生成器 → 项目实战
快速开始 → 条件构造器 → 自定义扩展 → 性能优化
MyBatis基础 → 分页查询 → 插件机制 → 最佳实践

3. 实践建议

  • 动手实践:每行代码都要亲自敲一遍
  • 对比学习:对比 MyBatis 和 MyBatis Plus 的差异
  • 阅读源码:了解核心功能的实现原理
  • 项目实战:在实际项目中应用所学知识

参考资源

官方资源

学习资源

准备好了吗?

准备好开始学习 MyBatis Plus 了吗?本教程将带你深入了解 MyBatis Plus 的核心功能和最佳实践。点击下一章开始你的学习之旅!