# MyBatis-Plus教程 - 8 更新删除进阶
在查询的时候,我们使用 QueryWrapper 和 LambdaQueryWrapper 来进行查询。
同样在更新的时候,MyBatis-Plus 也提供了 UpdateWrapper 和 LambdaUpdateWrapper 来更新数据,它们的关系如下:
下面就看一下如何使用它们。
# 8.1 UpdateWrapper
举个栗子,修改 username
为 doubi
的用户的年龄为 18 岁。
编写代码如下:
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
// 1.设置查询条件
updateWrapper.eq("username", "doubi");
// 2.设置更新的字段和值
updateWrapper.set("age", 18);
// 3.执行更新操作
int result = userMapper.update(null, updateWrapper);
log.info("执行结果:{}", result);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 首先设置查询条件,上面使用
eq()
方法匹配数据库字段username
为doubi
的用户,前面在查询进阶中讲到的各种查询的方式,在这里都可以使用。 - 然后通过
set()
方法设置数据库字段和对应的值。 - 然后执行
update()
方法更新即可,第一个参数是实体对象,这里没有,直接传递null。
执行的 SQL 如下:
UPDATE tb_user SET age=? WHERE (username = ?)
1
# 8.2 LambdaUpdateWrapper
UpdateWrapper
在操作的时候,指定的是数据库字段的名称,LambdaUpdateWrapper
指定的是 Java 实体类中方法的引用,这样可以避免写错。
使用 LambdaUpdateWrapper
重写一下上面的更新:
LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
// 1.设置查询条件
updateWrapper.eq(User::getUsername, "doubi");
// 2.设置更新的字段和值
updateWrapper.set(User::getAge, 18);
// 3.执行更新操作
int result = userMapper.update(null, updateWrapper);
log.info("执行结果:{}", result);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 8.3 删除
UpdateWrapper 和 LambdaUpdateWrapper 除了可以用来更新数据,还可以用来删除数据。
举个栗子:
根据用户名删除用户,代码如下:
LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
// 1.设置查询条件
updateWrapper.eq(User::getUsername, "doubi");
// 2.执行删除操作
int result = userMapper.delete(updateWrapper);
log.info("执行结果:{}", result);
1
2
3
4
5
6
7
2
3
4
5
6
7
先设置查询条件,然后执行删除。