mybatis plus update or
时间: 2025-06-13 07:57:37 浏览: 8
### MyBatis Plus 中 update 方法的条件更新语法
在 MyBatis Plus 中,`update` 方法支持通过条件构造器(如 `UpdateWrapper` 或 `LambdaUpdateWrapper`)实现条件更新。以下是详细的使用说明和示例代码:
#### 1. 条件更新的基本用法
条件更新允许开发者通过设置条件来更新满足特定条件的记录。以下是使用 `UpdateWrapper` 实现条件更新的示例[^2]:
```java
// 创建 UpdateWrapper 对象
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
// 设置更新条件:name 等于 "shimin"
updateWrapper.eq("name", "shimin");
// 创建需要更新的对象
User user = new User();
user.setAge(18); // 设置需要更新的字段
// 执行更新操作
int rowsAffected = userMapper.update(user, updateWrapper);
```
上述代码中,`updateWrapper.eq("name", "shimin")` 设置了更新条件,`user.setAge(18)` 指定了需要更新的字段值。最终调用 `userMapper.update` 方法完成更新操作[^2]。
#### 2. 使用条件构造器的 `set` 方法
除了直接设置实体对象的属性外,还可以通过 `UpdateWrapper` 的 `set` 方法指定需要更新的字段。以下是一个示例[^2]:
```java
// 创建 UpdateWrapper 对象
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
// 设置需要更新的字段及值
updateWrapper.set("age", 18);
// 设置更新条件
updateWrapper.eq("name", "shimin");
// 执行更新操作
int rowsAffected = userMapper.update(null, updateWrapper);
```
在此示例中,`set("age", 18)` 明确指定了需要更新的字段及其新值,而无需创建一个完整的实体对象[^2]。
#### 3. 使用 LambdaUpdateWrapper 提高类型安全性
为了提高代码的类型安全性,可以使用 `LambdaUpdateWrapper` 替代 `UpdateWrapper`。以下是一个示例[^4]:
```java
// 创建 LambdaUpdateWrapper 对象
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
// 设置需要更新的字段及值
lambdaUpdateWrapper.set(User::getAge, 18);
// 设置更新条件
lambdaUpdateWrapper.eq(User::getName, "shimin");
// 执行更新操作
int rowsAffected = userMapper.update(null, lambdaUpdateWrapper);
```
通过 `LambdaUpdateWrapper`,可以避免硬编码字段名,从而减少因字段名拼写错误导致的问题[^4]。
#### 4. 批量更新
MyBatis Plus 还支持基于主键的批量更新。以下是一个示例[^4]:
```java
// 创建需要更新的实体列表
List<User> userList = new ArrayList<>();
User user1 = new User();
user1.setId(1L);
user1.setAge(20);
userList.add(user1);
User user2 = new User();
user2.setId(2L);
user2.setAge(25);
userList.add(user2);
// 执行批量更新
boolean result = userMapper.updateBatchById(userList);
```
上述代码中,`updateBatchById` 方法会根据每个实体的主键字段进行更新[^4]。
---
阅读全文
相关推荐



















