# MyBatis-Plus教程 - 8 更新删除进阶

在查询的时候,我们使用 QueryWrapper 和 LambdaQueryWrapper 来进行查询。

同样在更新的时候,MyBatis-Plus 也提供了 UpdateWrapper 和 LambdaUpdateWrapper 来更新数据,它们的关系如下:

下面就看一下如何使用它们。

# 8.1 UpdateWrapper

举个栗子,修改 usernamedoubi 的用户的年龄为 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
  • 首先设置查询条件,上面使用 eq() 方法匹配数据库字段 usernamedoubi 的用户,前面在查询进阶中讲到的各种查询的方式,在这里都可以使用。
  • 然后通过 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

# 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

先设置查询条件,然后执行删除。