feat(): QueryColumn 的 between 增加数组参数

This commit is contained in:
CrazyAirhead 2024-04-27 08:31:39 +08:00
parent 08df2957ba
commit ebbfd1096e
2 changed files with 66 additions and 0 deletions

View File

@ -387,6 +387,21 @@ public interface Conditional<R> {
*/
R notIn(QueryWrapper queryWrapper, BooleanSupplier isEffective);
/**
* {@code BETWEEN values[0] AND values[1]}
*
* @param values 范围值
*/
R between(Object[] values);
/**
* {@code BETWEEN values[0] AND values[1]}
*
* @param values
* @param isEffective 是否有效
*/
R between(Object[] values, boolean isEffective);
/**
* {@code BETWEEN start AND end}
*
@ -422,6 +437,21 @@ public interface Conditional<R> {
*/
<S, E> R between(S start, E end, BiPredicate<S, E> isEffective);
/**
* {@code NOT BETWEEN values[0] AND values[1]}
*
* @param values 范围值
*/
R notBetween(Object[] values);
/**
* {@code NOT BETWEEN values[0] AND values[1]}
*
* @param values
* @param isEffective 是否有效
*/
R notBetween(Object[] values, boolean isEffective);
/**
* {@code NOT BETWEEN start AND end}
*

View File

@ -578,6 +578,24 @@ public class QueryColumn implements CloneSupport<QueryColumn>, Conditional<Query
return QueryColumnBehavior.castCondition(QueryCondition.create(this, SqlOperator.NOT_IN, queryWrapper).when(isEffective));
}
@Override
public QueryCondition between(Object[] values) {
if (QueryColumnBehavior.shouldIgnoreValue(values) || values.length < 2) {
return QueryCondition.createEmpty();
}
return between(values[0], values[1]);
}
@Override
public QueryCondition between(Object[] values, boolean isEffective) {
if (QueryColumnBehavior.shouldIgnoreValue(values) || values.length < 2) {
return QueryCondition.createEmpty();
}
return between(values[0], values[1], isEffective);
}
@Override
public QueryCondition between(Object start, Object end) {
if (QueryColumnBehavior.shouldIgnoreValue(start) || QueryColumnBehavior.shouldIgnoreValue(end)) {
@ -610,6 +628,24 @@ public class QueryColumn implements CloneSupport<QueryColumn>, Conditional<Query
return QueryColumnBehavior.castCondition(QueryCondition.create(this, SqlOperator.BETWEEN, new Object[]{start, end}).when(isEffective.test(start, end)));
}
@Override
public QueryCondition notBetween(Object[] values) {
if (QueryColumnBehavior.shouldIgnoreValue(values) || values.length < 2) {
return QueryCondition.createEmpty();
}
return notBetween(values[0], values[1]);
}
@Override
public QueryCondition notBetween(Object[] values, boolean isEffective) {
if (QueryColumnBehavior.shouldIgnoreValue(values) || values.length < 2) {
return QueryCondition.createEmpty();
}
return notBetween(values[0], values[1], isEffective);
}
@Override
public QueryCondition notBetween(Object start, Object end) {
if (QueryColumnBehavior.shouldIgnoreValue(start) || QueryColumnBehavior.shouldIgnoreValue(end)) {