# MyBatis教程 - 4 增删改查

下面先简单演示一下增删改查的实现。

中间会涉及到参数的传递和获取,这里先简单演示一下,下一节详细介绍参数的传递和获取。

# 4.1 查询

HelloWorld 中已经演示了查询所有的 User 数据,这里演示根据 ID 查询。

# 1 定义Mapper接口

在 UserMapper.java 中添加查询接口。

/**
 * 根据ID查询用户
 */
User selectById(Integer id);
1
2
3
4

# 2 添加SQL映射

在 UserMapper.xml 中添加查询的 SQL 映射。

<select id="selectById" resultType="User">
    SELECT * FROM tb_user
    WHERE id = #{id}
</select>
1
2
3
4

参数通过 #{id} 来获取到传递的 id 参数。

# 3 测试

在测试类中,添加测试方法进行测试。

@Test
public void testSelectUserById() {
    // 获取SqlSession连接
    SqlSession sqlSession = MyBatisUtils.getSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    Integer userId = 1;
    // 查询用户列表
    User user = userMapper.selectById(userId);
    log.info("user: {}", user);

    // 关闭SqlSession
    sqlSession.close();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 4.2 插入

# 1 定义Mapper接口

在 UserMapper.java 中添加插入接口。

/**
 * 插入用户
 */
int insert(User user);
1
2
3
4

# 2 添加SQL映射

在 UserMapper.xml 中添加插入的 SQL 映射。

<insert id="insert">
    INSERT INTO tb_user (username, password, email, age, create_time, update_time)
    VALUES (#{username}, #{password}, #{email}, #{age}, #{createTime}, #{updateTime})
</insert>
1
2
3
4

参数通过 #{} 来获取传递的 User 对象中的参数。参数传递和获取下一节再讲解。

# 3 测试

在测试类中,添加测试方法进行测试。

@Test
public void testInsertUser() {
    // 获取SqlSession连接
    SqlSession sqlSession = MyBatisUtils.getSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    User user = new User();
    user.setUsername("foooor");
    user.setPassword("123456");
    user.setEmail("foooor@qq.com");
    user.setAge(20);
    user.setCreateTime(new Date());
    user.setUpdateTime(new Date());

    // 插入用户
    int result = userMapper.insert(user);
    log.info("result: {}", result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 4.3 修改

# 1 定义Mapper接口

在 UserMapper.java 中添加修改接口。

/**
 * 更新用户
 */
int update(User user);
1
2
3
4

# 2 添加SQL映射

在 UserMapper.xml 中添加修改的 SQL 映射。

<update id="update">
    UPDATE tb_user
    SET username = #{username},
        password = #{password},
        email = #{email},
        age = #{age},
        update_time = #{updateTime}
    WHERE id = #{id}
</update>
1
2
3
4
5
6
7
8
9

参数通过 #{} 来获取传递的 User 对象中的参数,如果要修改哪个属性,就使用 SQL 修改。

# 3 测试

在测试类中,添加测试方法进行测试。

@Test
public void testUpdateUser() {
    // 获取SqlSession连接
    SqlSession sqlSession = MyBatisUtils.getSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    User user = new User();
    user.setId(4);
    user.setUsername("test");
    user.setPassword("12345678");
    user.setEmail("foooor@126.com");
    user.setAge(22);
    user.setUpdateTime(new Date());

    // 更新用户
    int result = userMapper.update(user);
    log.info("result: {}", result);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 4.4 删除

# 1 定义Mapper接口

在 UserMapper.java 中添加删除接口。

/**
 * 删除用户
 */
int deleteById(Integer id);
1
2
3
4

# 2 添加SQL映射

在 UserMapper.xml 中添加删除的 SQL 映射。

<delete id="deleteById">
    DELETE FROM tb_user
    WHERE id = #{id}
</delete>
1
2
3
4

参数通过 #{id} 来获取到传递的参数。

# 3 测试

在测试类中,添加测试方法进行测试。

@Test
public void testDeleteUser() {
    // 获取SqlSession连接
    SqlSession sqlSession = MyBatisUtils.getSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    Integer id = 4;

    // 删除用户
    int result = userMapper.deleteById(id);
    log.info("result: {}", result);
}
1
2
3
4
5
6
7
8
9
10
11
12

上面演示了增删改查的功能,关于参数的传递,下一节再讲解。