# MyBatis-Plus教程 - 3 Mapper增删改查
下面看一下如何使用 MyBatis-Plus 进行增删改查,暂时只讲解 CRUD 的基础用法,复杂的用户,后面的章节再讲解。
为了方便测试,下面在单元测试类中编写测试方法来演示相关的功能。在 src/test/java
包下创建测试类,并编写测试方法。
# 3.1 插入数据
插入用户数据:
package com.foooor.helloplus;
import com.foooor.helloplus.mapper.UserMapper;
import com.foooor.helloplus.pojo.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
@Slf4j // lombok提供的注解,用来打印日志
@SpringBootTest
public class CrudTests {
@Autowired
private UserMapper userMapper;
/**
* 测试插入用户
*/
@Test
void testInsertUser() {
User user = new User();
user.setUsername("foooor");
user.setAge(13);
user.setEmail("foooor@foooor.com");
Date currentDate = new Date();
user.setCreateTime(currentDate);
user.setUpdateTime(currentDate);
int result = userMapper.insert(user);
log.info("插入用户结果:{}", result);
log.info("插入用户:{}", user.getId());
}
}
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
28
29
30
31
32
33
34
35
36
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
28
29
30
31
32
33
34
35
36
- 在上面的代码中,直接通过
userMapper
调用insert()
方法来插入,insert()
方法是com.baomidou.mybatisplus.core.mapper.BaseMapper
提供的。 - 这里没有为 User 对象设置 ID,在新建表的时候,也没有指定主键 ID 自增,MyBatis-Plus 默认使用的是雪花算法,数据库字段的类型为
BIGINT
,关于主键生成策略,下一个章节再讲。 - MyBatis-Plus 默认会按照 雪花算法 自动生成ID。
执行结果如下:
可以看到插入数据后,可以直接获取到插入数据的 ID 。
# 3.2 修改数据
修改用户数据:
@Test
void testUpdateUser() {
Long id = 2L;
User user = new User();
user.setId(id);
user.setUsername("张三");
user.setAge(12);
user.setUpdateTime(new Date());
// 通过ID修改用户信息
int result = userMapper.updateById(user);
log.info("修改用户结果:{}", result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
上面根据 ID 修改用户信息,将要修改的值封装在 User 对象中,只会修改属性不为空的值。
执行结果:
# 3.3 查询数据
在 HelloWorld 中已经演示了查询所有数据,下面看一下根据 ID 查询用户。
查询用户数据:
@Test
void testSelectUserById() {
Long id = 2L;
User user = userMapper.selectById(id);
log.info("查询用户:{}", user);
}
1
2
3
4
5
6
2
3
4
5
6
非常的简单、方便。
# 3.4 删除数据
删除用户数据:
@Test
void testDeleteUser() {
Long id = 1L;
// 根据ID删除用户
int result = userMapper.deleteById(id);
log.info("删除用户结果:{}", result);
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
上面根据 ID 删除用户。
上面只是展示了 CRUD 的基本用法,不需要编写 Mapper 接口中的方法,使用起来非常的简单方便。其中还包含了很多的方法,可以根据自己的需要进行调用。