MyBatis-Plus简介
1. 简介
MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,旨在简化开发、提高效率。它在MyBatis基础上只做增强不做改变,提供了通用的Mapper和Service,支持单表增删改查、批量操作、逻辑删除、分页等功能,无需编写复杂SQL语句。
2. 核心特性
- 无侵入:对现有工程无影响,如丝般顺滑。
- 低损耗:启动自动注入基本CRUD,性能无显著损耗。
- 强大CRUD:内置通用Mapper和Service,支持条件构造器。
- Lambda支持:通过Lambda表达式安全编写查询条件。
- 主键策略:支持4种主键生成策略(含分布式ID生成器Sequence)。
- ActiveRecord模式:实体类继承Model即可进行CRUD。
- 代码生成器:快速生成Mapper、Model、Service、Controller层代码。
- 分页插件:物理分页,支持MySQL、Oracle等多种数据库。
- 性能分析插件:输出SQL及执行时间,助力优化。
- 全局拦截插件:智能阻断全表删除/更新,可自定义拦截规则。
3. 支持的数据库
支持所有标准SQL数据库,包括但不限于:
- MySQL, Oracle, DB2, H2, PostgreSQL, SQLServer
- 国产数据库:达梦、虚谷、人大金仓、南大通用等
4. 框架结构
MyBatis-Plus
├── 核心模块(core)
├── 代码生成器(generator)
├── 分页插件(pagination)
├── 性能分析插件(performance)
├── 通用Service(service)
└── 扩展支持(extension)
5. 代码与文档地址
- 官方地址:http://mp.baomidou.com
- 代码仓库:
- 文档中心:https://baomidou.com/pages/24112f
入门案例
1. 开发环境
- IDE:IntelliJ IDEA 2019.2+
- JDK:JDK8+
- 构建工具:Maven 3.5.4+
- MySQL:5.7+
- Spring Boot:2.6.3
- MyBatis-Plus:3.5.1
2. 创建数据库及表
-- 创建表
CREATE TABLE user (
id BIGINT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(30) DEFAULT NULL,
age INT(11) DEFAULT NULL,
email VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (id)
);
-- 插入数据
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
3. 创建Spring Boot工程
3.1 初始化工程
通过Spring Initializr创建工程,勾选以下依赖:
- Spring Web
- MyBatis-Plus
- MySQL Driver
- Lombok
3.2 引入依赖(Maven)
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- MySQL Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
3.3 安装Lombok插件
在IDEA中安装Lombok插件,确保编译时正确处理注解。
4. 编写代码
4.1 配置application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启SQL日志
4.2 启动类
@SpringBootApplication
@MapperScan("com.example.mapper") // 扫描Mapper包
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
4.3 实体类
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
4.4 Mapper接口
public interface UserMapper extends BaseMapper<User> {
}
4.5 测试类
@SpringBootTest
class ApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
User user = userMapper.selectById(1L);
System.out.println(user);
}
}
5. 注意事项
-
MySQL驱动版本:
- Spring Boot 2.0及以下:使用
com.mysql.jdbc.Driver
- Spring Boot 2.1及以上:使用
com.mysql.cj.jdbc.Driver
- Spring Boot 2.0及以下:使用
-
时区问题:
- MySQL 8.0+需在URL中添加
serverTimezone=GMT%2B8
- MySQL 8.0+需在URL中添加
-
消除IDEA警告:
- 在Mapper接口添加
@Repository
注解
- 在Mapper接口添加
6. 日志配置
logging:
level:
com.example.mapper: debug # 输出Mapper层SQL