1. 引言
MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它内置了通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表的大部分 CRUD 操作,更有强大的条件构造器,可以满足各类复杂查询需求。
本文将带你从零开始认识 MyBatis-Plus,通过一个完整的入门案例快速上手,并详细讲解常用的注解与核心配置,帮助你快速掌握这一主流开发利器。
目录
- 1. 引言
- 2. MyBatis-Plus 简介
- 2.1 什么是 MyBatis-Plus
- 2.2 为什么选择 MyBatis-Plus
- 3. 环境准备
- 3.1 环境要求
- 3.2 创建 Spring Boot 项目
- 3.3 配置数据源
- 4. 入门案例
- 4.1 创建数据库表
- 4.2 创建实体类
- 4.3 创建 Mapper 接口
- 4.4 编写测试代码
- 4.5 条件构造器查询
- 5. 常用注解详解
- 5.1 @TableName
- 5.2 @TableId
- 5.3 @TableField
- 5.4 @TableLogic
- 5.5 @Version
- 5.6 @EnumValue
- 6. 常用配置详解
- 6.1 全局配置
- 6.2 日志配置
- 6.3 分页插件配置
- 6.4 乐观锁插件配置
- 6.5 性能分析插件
- 6.6 自动填充配置
- 7. 代码生成器实战
- 7.1 添加依赖
- 7.2 编写生成器代码
- 7.3 执行生成
- 7.4 生成后的目录结构
- 8. 总结
2. MyBatis-Plus 简介
2.1 什么是 MyBatis-Plus
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
它的核心特性包括:
- 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
- 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作。
- 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求。
- 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错。
- 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器),可自由配置,完美解决主键问题。
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作。
- 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )。
- 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用。
- 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询。
- 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库。
- 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询。
- 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作。
2.2 为什么选择 MyBatis-Plus
在传统的 MyBatis 开发中,即使是一个简单的单表查询,也需要编写对应的 SQL 语句和映射文件。而 MyBatis-Plus 通过内置的通用 Mapper,让开发者无需编写 SQL 即可完成大部分单表操作,大幅提升了开发效率。
3. 环境准备
3.1 环境要求
- JDK 8 及以上
- Maven 3.5+
- MySQL 5.7 及以上(或其他支持的数据库)
- Spring Boot 2.x 或 3.x
3.2 创建 Spring Boot 项目
首先,通过 Spring Initializr 创建一个 Spring Boot 项目,并添加以下依赖:
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>注意:如果使用 Spring Boot 3.x,请使用
mybatis-plus-spring-boot3-starter依赖。
3.3 配置数据源
在application.yml中配置数据源信息:
spring:datasource:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/mybatis_plus_demo?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghaiusername:rootpassword:123456mybatis-plus:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImpl4. 入门案例
4.1 创建数据库表
首先,在数据库中创建一张用户表:
CREATETABLE`user`(`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'主键ID',`name`varchar(30)DEFAULTNULLCOMMENT'姓名',`age`int(11)DEFAULTNULLCOMMENT'年龄',`email`varchar(50)DEFAULTNULLCOMMENT'邮箱',`create_time`datetimeDEFAULTNULLCOMMENT'创建时间',`update_time`datetimeDEFAULTNULLCOMMENT'更新时间',PRIMARY