2025-05-20 19:32:40 +08:00
|
|
|
|
主要区别在于它们的**用途**和**能执行的操作**不同:
|
2025-03-24 16:04:56 +08:00
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
| 特性 | `lambdaQuery()` | `lambdaUpdate()` |
|
|
|
|
|
| -------------- | --------------------------------------------------------- | --------------------------------------------------------- |
|
|
|
|
|
| **主要用途** | 构造查询条件,执行 `SELECT` 操作 | 构造更新条件,执行 `UPDATE`(或逻辑删除)操作 |
|
|
|
|
|
| **返回类型** | `LambdaQueryChainWrapper<T>` 或 `LambdaQueryWrapper<T>` | `LambdaUpdateChainWrapper<T>` 或 `LambdaUpdateWrapper<T>` |
|
|
|
|
|
| **支持的方法** | `.eq()`, `.like()`, `.gt()`, `.orderBy()`, `.select()` 等 | `.eq()`, `.lt()`, `.set()`, `.setSql()` 等 |
|
|
|
|
|
| **执行方法** | `.list()`, `.one()`, `.page()` 等 | `.update()`, `.remove()`(逻辑删除) |
|
2025-04-13 14:09:55 +08:00
|
|
|
|
|
2025-04-29 18:12:50 +08:00
|
|
|
|
------
|
2025-04-13 14:09:55 +08:00
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
### 举例对比
|
2025-04-13 14:09:55 +08:00
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
1. **查询:`lambdaQuery()`**
|
2025-04-13 14:09:55 +08:00
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
```java
|
|
|
|
|
// 查出状态为 1,名字中含 “张”,并按年龄降序的前 10 条用户
|
|
|
|
|
List<User> list = userService.lambdaQuery()
|
|
|
|
|
.eq(User::getStatus, 1)
|
|
|
|
|
.like(User::getName, "张")
|
|
|
|
|
.orderByDesc(User::getAge)
|
|
|
|
|
.last("LIMIT 10")
|
|
|
|
|
.list();
|
|
|
|
|
```
|
2025-04-13 14:09:55 +08:00
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
2. **更新:`lambdaUpdate()`**
|
2025-04-13 14:09:55 +08:00
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
```java
|
|
|
|
|
// 把状态为 0,且注册时间超过两年的用户标记为状态 2
|
|
|
|
|
boolean ok = userService.lambdaUpdate()
|
|
|
|
|
.eq(User::getStatus, 0)
|
|
|
|
|
.lt(User::getRegisterTime, LocalDate.now().minusYears(2))
|
|
|
|
|
.set(User::getStatus, 2)
|
|
|
|
|
.update();
|
|
|
|
|
```
|
2025-04-29 18:12:50 +08:00
|
|
|
|
|
|
|
|
|
------
|
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
#### 小结
|
|
|
|
|
|
|
|
|
|
- 用 `lambdaQuery()` 构造查询条件,只做 **读** 操作。
|
|
|
|
|
- 用 `lambdaUpdate()` 构造更新条件,结合 `.set()` 指定要修改的字段,做 **改**(或 “逻辑删”)操作。
|
2025-04-29 18:12:50 +08:00
|
|
|
|
|
2025-05-20 19:32:40 +08:00
|
|
|
|
它们都是为了解决写 SQL 时硬编码字段名的问题,通过 `User::getXxx` 方法引用,保证 **类型安全**、**重构无忧**。
|