!363 增加QueryColumnBehavior内置的规则,方便使用

Merge pull request !363 from 简单风/flex-feature-queryColumnBehavior
This commit is contained in:
Michael Yang 2023-10-12 03:25:55 +00:00 committed by Gitee
commit 75cb543b2a
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 16 additions and 4 deletions

View File

@ -1110,13 +1110,18 @@ QueryWrapper query2 = QueryWrapper.create()
## QueryColumnBehavior <Badge type="tip" text="^ v1.5.7" /> ## QueryColumnBehavior <Badge type="tip" text="^ v1.5.7" />
在以上的内容中,我们知道 MyBatis-Flex 会自动忽略 `null` 值的条件,但是在实际开发中,有的开发者希望除了自动忽略 `null` 在以上的内容中,我们知道 MyBatis-Flex 会自动忽略 `null` 值的条件,但是在实际开发中,有的开发者希望除了自动忽略 `null`
值以外,还可以自动忽略其他值,比如 `空字符串` 值以外,还可以自动忽略其他值,内置的规则有`null`(默认) 、`空字符串``空白字符串` ,当然也可以自定义
此时,我们可以通过配置 QueryColumnBehavior 来自定义忽略的值。如下的代码会自动忽略 `null``空字符串` 此时,我们可以通过配置 QueryColumnBehavior 来自定义忽略的值。
```java ```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` 逻辑,否则使用 `=`(等于) 另外,在某些场景下,开发者希望在构建 QueryWrapper 中,如果传入的值是集合或数组,则使用 `in` 逻辑,否则使用 `=`(等于)

View File

@ -29,10 +29,17 @@ public class QueryColumnBehavior {
private 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 个参数时是否自动把的内容转换为相等 * {@code IN(...)} 条件只有 1 个参数时是否自动把的内容转换为相等