mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-08 17:48:25 +08:00
doc: 优化where动态条件说明
This commit is contained in:
parent
d59bb223df
commit
48f9c4bb88
@ -533,13 +533,18 @@ WHERE id >= ?
|
|||||||
AND user_name LIKE ?
|
AND user_name LIKE ?
|
||||||
```
|
```
|
||||||
|
|
||||||
## where 动态条件 1
|
## where 动态条件
|
||||||
|
::: tip 注意
|
||||||
|
QueryWrapper条件构建中,若参数为null时默认会被忽略,不会拼接查询条件
|
||||||
|
:::
|
||||||
|
|
||||||
|
**方式1:when()**
|
||||||
|
|
||||||
```java 1,4
|
```java 1,4
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
.select().from(ACCOUNT)
|
.select().from(ACCOUNT)
|
||||||
.where(flag ? ACCOUNT.ID.ge(100) : noCondition())
|
.where(ACCOUNT.ID.ge(100).when(flag)) //flag为false,忽略该条件
|
||||||
.and(ACCOUNT.USER_NAME.like("michael"));
|
.and(ACCOUNT.USER_NAME.like("michael"));
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -547,60 +552,36 @@ QueryWrapper queryWrapper = QueryWrapper.create()
|
|||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT * FROM tb_account
|
SELECT * FROM tb_account
|
||||||
WHERE user_name LIKE ?
|
WHERE user_name LIKE 'michael'
|
||||||
```
|
```
|
||||||
|
**方式2:使用重载方法**
|
||||||
## where 动态条件 2
|
|
||||||
|
|
||||||
```java 1,4
|
```java 1,4
|
||||||
boolean flag = false;
|
boolean flag = false;
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
.select().from(ACCOUNT)
|
.select().from(ACCOUNT)
|
||||||
.where(ACCOUNT.ID.ge(100, flag))
|
.and(ACCOUNT.USER_NAME.like("michael", flag)); //flag为false,忽略该条件
|
||||||
// 等同于 .where(ACCOUNT.ID.ge(100).when(flag))
|
|
||||||
.and(ACCOUNT.USER_NAME.like("michael"));
|
|
||||||
```
|
```
|
||||||
|
对当前条件参数进行判断:
|
||||||
其查询生成的 Sql 如下:
|
|
||||||
|
|
||||||
```sql
|
|
||||||
SELECT * FROM tb_account
|
|
||||||
WHERE user_name LIKE ?
|
|
||||||
```
|
|
||||||
|
|
||||||
## where 动态条件 3
|
|
||||||
|
|
||||||
```java 1,5
|
```java 1,5
|
||||||
String name = null;
|
String name = "";
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
.select().from(ACCOUNT)
|
.select().from(ACCOUNT)
|
||||||
.where(ACCOUNT.ID.ge(100)) // when....
|
.where(ACCOUNT.USER_NAME.like(name, StringUtil::isNotBlank)); //name为空字符串,忽略该条件
|
||||||
.and(ACCOUNT.USER_NAME.like(name, StringUtil::isNotBlank));
|
|
||||||
```
|
```
|
||||||
|
框架提供了工具类`If`,包含常用的判断方法(如非空、非空集合、非空字符串等),供开发者简化代码:
|
||||||
其查询生成的 Sql 如下:
|
|
||||||
|
|
||||||
```sql
|
|
||||||
SELECT * FROM tb_account
|
|
||||||
WHERE id >= ?
|
|
||||||
```
|
|
||||||
|
|
||||||
## where 动态条件 4
|
|
||||||
|
|
||||||
```java 1,5
|
```java 1,5
|
||||||
String name = null;
|
String name = "";
|
||||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
.select().from(ACCOUNT)
|
.select().from(ACCOUNT)
|
||||||
.where(ACCOUNT.ID.ge(100))
|
.where(ACCOUNT.USER_NAME.like(name, If::hasText)); //name是否有文本
|
||||||
.and(ACCOUNT.USER_NAME.like(name, If::hasText));
|
|
||||||
```
|
```
|
||||||
|
|
||||||
其查询生成的 Sql 如下:
|
上述代码生成的 Sql 如下:
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT * FROM tb_account
|
SELECT * FROM tb_account;
|
||||||
WHERE id >= ?
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## where 使用 SQL 函数
|
## where 使用 SQL 函数
|
||||||
你可以通过使用 QueryMethods 类下的函数实现 where 对指定列运算后作为条件进行查询(QueryMethods 位于 mybatisflex.core.query 下)。
|
你可以通过使用 QueryMethods 类下的函数实现 where 对指定列运算后作为条件进行查询(QueryMethods 位于 mybatisflex.core.query 下)。
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user