44 lines
2.0 KiB
Markdown
44 lines
2.0 KiB
Markdown
主要区别在于它们的**用途**和**能执行的操作**不同:
|
||
|
||
| 特性 | `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()`(逻辑删除) |
|
||
|
||
------
|
||
|
||
### 举例对比
|
||
|
||
1. **查询:`lambdaQuery()`**
|
||
|
||
```java
|
||
// 查出状态为 1,名字中含 “张”,并按年龄降序的前 10 条用户
|
||
List<User> list = userService.lambdaQuery()
|
||
.eq(User::getStatus, 1)
|
||
.like(User::getName, "张")
|
||
.orderByDesc(User::getAge)
|
||
.last("LIMIT 10")
|
||
.list();
|
||
```
|
||
|
||
2. **更新:`lambdaUpdate()`**
|
||
|
||
```java
|
||
// 把状态为 0,且注册时间超过两年的用户标记为状态 2
|
||
boolean ok = userService.lambdaUpdate()
|
||
.eq(User::getStatus, 0)
|
||
.lt(User::getRegisterTime, LocalDate.now().minusYears(2))
|
||
.set(User::getStatus, 2)
|
||
.update();
|
||
```
|
||
|
||
------
|
||
|
||
#### 小结
|
||
|
||
- 用 `lambdaQuery()` 构造查询条件,只做 **读** 操作。
|
||
- 用 `lambdaUpdate()` 构造更新条件,结合 `.set()` 指定要修改的字段,做 **改**(或 “逻辑删”)操作。
|
||
|
||
它们都是为了解决写 SQL 时硬编码字段名的问题,通过 `User::getXxx` 方法引用,保证 **类型安全**、**重构无忧**。 |