Appearance
MyBatis-Plus教程 - 8 更新删除进阶
在查询的时候,我们使用 QueryWrapper 和 LambdaQueryWrapper 来进行查询。
同样在更新的时候,MyBatis-Plus 也提供了 UpdateWrapper 和 LambdaUpdateWrapper 来更新数据,它们的关系如下:

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