# 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
  • 在上面的代码中,直接通过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

上面根据 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

非常的简单、方便。

# 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

上面根据 ID 删除用户。


上面只是展示了 CRUD 的基本用法,不需要编写 Mapper 接口中的方法,使用起来非常的简单方便。其中还包含了很多的方法,可以根据自己的需要进行调用。