# MyBatis教程 - 4 增删改查
下面先简单演示一下增删改查的实现。
中间会涉及到参数的传递和获取,这里先简单演示一下,下一节详细介绍参数的传递和获取。
# 4.1 查询
HelloWorld 中已经演示了查询所有的 User 数据,这里演示根据 ID 查询。
# 1 定义Mapper接口
在 UserMapper.java 中添加查询接口。
/**
* 根据ID查询用户
*/
User selectById(Integer id);
1
2
3
4
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
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
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
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
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
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
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
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
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
3
4
# 2 添加SQL映射
在 UserMapper.xml 中添加删除的 SQL 映射。
<delete id="deleteById">
DELETE FROM tb_user
WHERE id = #{id}
</delete>
1
2
3
4
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
2
3
4
5
6
7
8
9
10
11
12
上面演示了增删改查的功能,关于参数的传递,下一节再讲解。