mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-06 16:48:24 +08:00
QueryColumnBehavior增加内置的忽略规则,方便使用
This commit is contained in:
parent
83a22fa5b0
commit
893cabc9bb
@ -1110,13 +1110,18 @@ QueryWrapper query2 = QueryWrapper.create()
|
||||
## QueryColumnBehavior <Badge type="tip" text="^ v1.5.7" />
|
||||
|
||||
在以上的内容中,我们知道 MyBatis-Flex 会自动忽略 `null` 值的条件,但是在实际开发中,有的开发者希望除了自动忽略 `null`
|
||||
值以外,还可以自动忽略其他值,比如 `空字符串` 等。
|
||||
值以外,还可以自动忽略其他值,内置的规则有`null`(默认) 、`空字符串`、`空白字符串` ,当然也可以自定义。
|
||||
|
||||
|
||||
此时,我们可以通过配置 QueryColumnBehavior 来自定义忽略的值。如下的代码会自动忽略 `null` 和 `空字符串`:
|
||||
此时,我们可以通过配置 QueryColumnBehavior 来自定义忽略的值。
|
||||
|
||||
```java
|
||||
QueryColumnBehavior.setIgnoreFunction(o -> o == null || "".equals(o));
|
||||
// 使用内置规则自动忽略 null 和 空字符串
|
||||
QueryColumnBehavior.setIgnoreFunction(QueryColumnBehavior.IGNORE_EMPTY);
|
||||
// 使用内置规则自动忽略 null 和 空白字符串
|
||||
QueryColumnBehavior.setIgnoreFunction(QueryColumnBehavior.IGNORE_BLANK);
|
||||
// 其他自定义规则
|
||||
QueryColumnBehavior.setIgnoreFunction(o -> {...});
|
||||
```
|
||||
|
||||
另外,在某些场景下,开发者希望在构建 QueryWrapper 中,如果传入的值是集合或数组,则使用 `in` 逻辑,否则使用 `=`(等于)
|
||||
|
||||
@ -29,10 +29,17 @@ public class QueryColumnBehavior {
|
||||
private QueryColumnBehavior() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 内置的可选的忽略规则
|
||||
*/
|
||||
public static final Predicate<Object> IGNORE_NULL = Objects::isNull;
|
||||
public static final Predicate<Object> IGNORE_EMPTY = o -> o == null || "".equals(o);
|
||||
public static final Predicate<Object> IGNORE_BLANK = o -> o == null || "".equals(o.toString().trim());
|
||||
|
||||
/**
|
||||
* 自定义全局的自动忽略参数的方法。
|
||||
*/
|
||||
private static Predicate<Object> ignoreFunction = Objects::isNull;
|
||||
private static Predicate<Object> ignoreFunction = IGNORE_NULL;
|
||||
|
||||
/**
|
||||
* 当 {@code IN(...)} 条件只有 1 个参数时,是否自动把的内容转换为相等。
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user