MyBatis-Plus入门
# MyBatis-Plus 是什么
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
- 润物无声
- 只做增强不做改变,引入它不会对现有工程产生影响
- 效率至上
- 只需简单配置,即可快速 CRUD 操作,从而节省时间
- 拥有热加载、代码生成、分页、性能分析等功能一应俱全
# MP 入门
# 创建数据库,创建数据库表
数据库名为:mybatis_plus
其对应的数据库Schema
脚本如下:
create table user
(
id BIGINT(20) not null comment '主键ID',
name varchar(30) null default null comment '姓名',
age int(11) null default null comment '年龄',
email varchar(50) null default null comment '邮箱',
primary key (id)
);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
并进行填充数据。
# 创建工程springboot
# 初始化工程
使用Spring Initializr
快速初始化一个SpringBoot
工程
Group: com.wjstar
Artifact: demomybatis_plus
# 引入依赖
注意:引入MyBatis-Plus
之后请不要再次引入MyBatis
,以避免版本差异导致的问题
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 配置数据库信息
在application.properties
配置文件中添加MySQL
数据库相关的配置
SpringBoot 2.0
(内置 jdbc5 驱动)
# mysql 数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&useSSL=false
spring.datasource.username=gulimall
spring.datasource.password=root
1
2
3
4
5
2
3
4
5
SpringBoot 2.1及以上
(内置 jdbc8 驱动)
注意:Driver
和url
的变化
# mysql 数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=gulimall
spring.datasource.password=root
1
2
3
4
5
2
3
4
5
注意,这里 url 加了时区后缀,因为 8.0 版本的 jdbc 驱动需要添加这个后缀,否则运行测试用例会报错
警告
java.sql.SQLException: The server time zone value 乱码 unrecognized or represents more
这里的driver-class-name
使用了com.mysql.cj.jdbc.Driver
,在 jdbc8 中建议使用这个驱动,否则运行的时候会有WARN
信息。
# 添加实体类
添加entity
实体类的包名
package com.wjstar.demomptest.entity;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
这里使用了lombok
的@Data
注解来代替getter
和setter
方法
# 添加 mapper
创建包mapper
编写Mapper
接口
package com.wjstar.demomptest.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wjstar.demomptest.entity.User;
public interface UserMapper extends BaseMapper<User> {
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 启动类加上MapperScan
注解
package com.wjstar.demomptest;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.wjstar.demomptest.mapper")
public class DemomptestApplication {
public static void main(String[] args) {
SpringApplication.run(DemomptestApplication.class, args);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 编写测试代码
package com.wjstar.demomptest;
import com.wjstar.demomptest.entity.User;
import com.wjstar.demomptest.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class DemomptestApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
void contextLoads() {
}
@Test
public void findAll() {
List<User> users = userMapper.selectList(null);
System.out.println(users);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
会发现此时:userMapper
是爆红的,其实我们可以不用管,但是看着别扭的人,可以去UserMapper
加上@Respository
注解即可。
运行结果
2022-02-16 23:31:26.718 INFO 13010 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2022-02-16 23:31:27.017 INFO 13010 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
[User(id=1, name=Jone, age=18, email=123@qq.com), User(id=2, name=jack, age=19, email=dwq@qq.com), User(id=3, name=tom, age=20, email=tom@qq.com)]
1
2
3
4
2
3
4
编辑 (opens new window)
上次更新: 2022/02/16, 23:37:03