mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-07 09:08:24 +08:00
commit
9a75798d22
@ -15,14 +15,13 @@
|
||||
*/
|
||||
package com.mybatisflex.core.activerecord.query;
|
||||
|
||||
import com.mybatisflex.core.query.CPI;
|
||||
import com.mybatisflex.core.query.QueryColumn;
|
||||
import com.mybatisflex.core.query.SqlConnector;
|
||||
import com.mybatisflex.core.query.*;
|
||||
import com.mybatisflex.core.util.LambdaGetter;
|
||||
import com.mybatisflex.core.util.LambdaUtil;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
@ -31,7 +30,7 @@ import java.util.function.Predicate;
|
||||
* @author 王帅
|
||||
* @since 2023-07-24
|
||||
*/
|
||||
public class WhereBuilder<R extends QueryModel<R>> {
|
||||
public class WhereBuilder<R extends QueryModel<R>> implements Conditional<R> {
|
||||
|
||||
private final R queryModel;
|
||||
private final QueryColumn queryColumn;
|
||||
@ -43,368 +42,661 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
this.connector = connector;
|
||||
}
|
||||
|
||||
private void addWhereQueryCondition(QueryCondition queryCondition) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryCondition, connector);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R eq(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.eq(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.eq(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R eq(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.eq(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R eq(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.eq(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R eq(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.eq(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R eq(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.eq(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 等于 {@code =}
|
||||
*/
|
||||
public <T> R eq(LambdaGetter<T> value) {
|
||||
return eq(LambdaUtil.getQueryColumn(value));
|
||||
return eq(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 等于 {@code =}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R eq(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.eq(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
public <T> R eq(LambdaGetter<T> value, boolean isEffective) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 等于 {@code =}
|
||||
*/
|
||||
public <T> R eq(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R ne(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ne(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.ne(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R ne(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ne(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R ne(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ne(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R ne(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ne(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R ne(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ne(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*/
|
||||
public <T> R ne(LambdaGetter<T> value) {
|
||||
return ne(LambdaUtil.getQueryColumn(value));
|
||||
return ne(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 不等于 {@code !=}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R ne(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ne(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
public <T> R ne(LambdaGetter<T> value, boolean isEffective) {
|
||||
return ne(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
public R like(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.like(value), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R like(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.like(value, when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R likeLeft(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.likeLeft(value), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R likeLeft(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.likeLeft(value, when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R likeRight(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.likeRight(value), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R likeRight(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.likeRight(value, when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*/
|
||||
public <T> R ne(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return ne(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R gt(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.gt(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.gt(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R gt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.gt(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R gt(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.gt(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R gt(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.gt(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R gt(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.gt(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于 {@code >}
|
||||
*/
|
||||
public <T> R gt(LambdaGetter<T> value) {
|
||||
return gt(LambdaUtil.getQueryColumn(value));
|
||||
return gt(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 大于 {@code >}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R gt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.gt(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
public <T> R gt(LambdaGetter<T> value, boolean isEffective) {
|
||||
return gt(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于 {@code >}
|
||||
*/
|
||||
public <T> R gt(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return gt(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R ge(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ge(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.ge(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R ge(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ge(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R ge(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ge(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R ge(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ge(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R ge(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ge(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于等于 {@code >=}
|
||||
*/
|
||||
public <T> R ge(LambdaGetter<T> value) {
|
||||
return ge(LambdaUtil.getQueryColumn(value));
|
||||
return eq(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 大于等于 {@code >=}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R ge(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ge(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
public <T> R ge(LambdaGetter<T> value, boolean isEffective) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于等于 {@code >=}
|
||||
*/
|
||||
public <T> R ge(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return ge(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R lt(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.lt(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.lt(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R lt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.lt(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R lt(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.lt(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R lt(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.lt(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R lt(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.lt(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于 {@code <}
|
||||
*/
|
||||
public <T> R lt(LambdaGetter<T> value) {
|
||||
return lt(LambdaUtil.getQueryColumn(value));
|
||||
return lt(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 小于 {@code <}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R lt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.lt(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
public <T> R lt(LambdaGetter<T> value, boolean isEffective) {
|
||||
return lt(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于 {@code <}
|
||||
*/
|
||||
public <T> R lt(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return lt(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R le(Object value) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.le(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.le(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R le(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.le(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R le(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.le(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R le(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.le(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R le(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.le(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于等于 {@code <=}
|
||||
*/
|
||||
public <T> R le(LambdaGetter<T> value) {
|
||||
return le(LambdaUtil.getQueryColumn(value));
|
||||
return le(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 小于等于 {@code <=}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R le(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.le(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
public <T> R le(LambdaGetter<T> value, boolean isEffective) {
|
||||
return le(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于等于 {@code <=}
|
||||
*/
|
||||
public <T> R le(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return le(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(Object... value) {
|
||||
addWhereQueryCondition(queryColumn.in(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R isNull() {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.isNull(), connector);
|
||||
@Override
|
||||
public R in(Object[] value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(Object[] value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R in(T[] value, Predicate<T[]> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(Collection<?> value) {
|
||||
addWhereQueryCondition(queryColumn.in(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(Collection<?> value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(Collection<?> value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Collection<?>> R in(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(QueryWrapper queryWrapper) {
|
||||
addWhereQueryCondition(queryColumn.in(queryWrapper));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(QueryWrapper queryWrapper, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(queryWrapper, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R in(QueryWrapper queryWrapper, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(queryWrapper, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
* {@code IN(value)}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R isNull(Predicate<T> when) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.isNull(when), connector);
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R isNotNull() {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.isNotNull(), connector);
|
||||
return queryModel;
|
||||
public R in(QueryModel<R> queryModel) {
|
||||
return in(queryModel, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
* {@code IN(value)}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R isNotNull(Predicate<T> when) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.isNotNull(when), connector);
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R in(Object... arrays) {
|
||||
if (arrays != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(arrays), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R in(T[] arrays, Predicate<T[]> when) {
|
||||
//忽略 QueryWrapper.in("name", null) 的情况
|
||||
if (arrays != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(arrays, when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R in(R queryModel) {
|
||||
public R in(QueryModel<R> queryModel, boolean isEffective) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(queryModel), connector);
|
||||
addWhereQueryCondition(queryColumn.in(queryModel.queryWrapper(), isEffective));
|
||||
}
|
||||
return this.queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
* {@code IN(value)}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R in(R queryModel, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(queryModel, when), connector);
|
||||
}
|
||||
return this.queryModel;
|
||||
public R in(QueryModel<R> queryModel, BooleanSupplier isEffective) {
|
||||
return in(queryModel, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
public R in(Collection<?> collection) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(collection), connector);
|
||||
}
|
||||
@Override
|
||||
public R notIn(Object... value) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T extends Collection<?>> R in(T collection, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(collection, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R notIn(Object[] value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R notIn(Object... arrays) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(arrays), connector);
|
||||
}
|
||||
@Override
|
||||
public R notIn(Object[] value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R notIn(T[] arrays, Predicate<T[]> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(arrays, when), connector);
|
||||
}
|
||||
@Override
|
||||
public <T> R notIn(T[] value, Predicate<T[]> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R notIn(Collection<?> collection) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(collection), connector);
|
||||
}
|
||||
@Override
|
||||
public R notIn(Collection<?> value) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T extends Collection<?>> R notIn(T collection, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(collection, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R notIn(Collection<?> value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R notIn(R queryModel) {
|
||||
@Override
|
||||
public R notIn(Collection<?> value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Collection<?>> R notIn(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notIn(QueryWrapper queryWrapper) {
|
||||
addWhereQueryCondition(queryColumn.notIn(queryWrapper));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notIn(QueryWrapper queryWrapper, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(queryWrapper, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notIn(QueryWrapper queryWrapper, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(queryWrapper, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*/
|
||||
public R notIn(QueryModel<R> queryModel) {
|
||||
return notIn(queryModel, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*/
|
||||
public R notIn(QueryModel<R> queryModel, boolean isEffective) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(queryModel), connector);
|
||||
addWhereQueryCondition(queryColumn.notIn(queryModel.queryWrapper(), isEffective));
|
||||
}
|
||||
return this.queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
* {@code NOT IN(value)}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R notIn(R queryModel, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(queryModel, when), connector);
|
||||
}
|
||||
return this.queryModel;
|
||||
public R notIn(QueryModel<R> queryModel, BooleanSupplier isEffective) {
|
||||
return notIn(queryModel, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public R between(Object start, Object end) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.between(start, end), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.between(start, end));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <S, E> R between(S start, E end, BiPredicate<S, E> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.between(start, end, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R between(Object start, Object end, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.between(start, end, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R between(Object start, Object end, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.between(start, end, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <S, E> R between(S start, E end, BiPredicate<S, E> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.between(start, end, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notBetween(Object start, Object end) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notBetween(start, end), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <S, E> R notBetween(S start, E end, BiPredicate<S, E> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notBetween(start, end, when), connector);
|
||||
}
|
||||
@Override
|
||||
public R notBetween(Object start, Object end, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notBetween(Object start, Object end, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <S, E> R notBetween(S start, E end, BiPredicate<S, E> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R like(Object value) {
|
||||
addWhereQueryCondition(queryColumn.like(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R like(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.like(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R like(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.like(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R like(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.like(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R likeLeft(Object value) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R likeLeft(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R likeLeft(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R likeLeft(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R likeRight(Object value) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R likeRight(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R likeRight(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R likeRight(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLike(Object value) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLike(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLike(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R notLike(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLikeLeft(Object value) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLikeLeft(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLikeLeft(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R notLikeLeft(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLikeRight(Object value) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLikeRight(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R notLikeRight(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> R notLikeRight(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value, isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R isNull(boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.isNull(isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public R isNotNull(boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.isNotNull(isEffective));
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
|
||||
@ -41,6 +41,9 @@ public enum SqlOperator {
|
||||
// =
|
||||
EQUALS(SqlConsts.EQUALS),
|
||||
|
||||
// !=
|
||||
NOT_EQUALS(SqlConsts.NOT_EQUALS),
|
||||
|
||||
// is null
|
||||
IS_NULL(SqlConsts.IS_NULL),
|
||||
|
||||
@ -70,4 +73,5 @@ public enum SqlOperator {
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -20,8 +20,6 @@ import com.mybatisflex.core.util.ObjectUtil;
|
||||
import com.mybatisflex.core.util.StringUtil;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* 括号
|
||||
@ -59,25 +57,6 @@ public class Brackets extends QueryCondition {
|
||||
childCondition.setLogic(logic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryCondition when(boolean effective) {
|
||||
return childCondition.when(effective);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryCondition when(BooleanSupplier fn) {
|
||||
return childCondition.when(fn);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 继承自标记删除的方法
|
||||
*/
|
||||
@Override
|
||||
@Deprecated
|
||||
public <T> QueryCondition when(Predicate<T> fn) {
|
||||
return childCondition.when(fn);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected QueryCondition getNextEffectiveCondition() {
|
||||
return childCondition.getNextEffectiveCondition();
|
||||
|
||||
@ -0,0 +1,692 @@
|
||||
/*
|
||||
* Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com).
|
||||
* <p>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.mybatisflex.core.query;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* 动态条件查询接口。
|
||||
*
|
||||
* @param <R> 链式调用返回值类型
|
||||
* @author 王帅
|
||||
* @since 2023-08-12
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public interface Conditional<R> {
|
||||
|
||||
/**
|
||||
* 等于 {@code =}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R eq(Object value);
|
||||
|
||||
/**
|
||||
* 等于 {@code =}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R eq(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 等于 {@code =}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R eq(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* 等于 {@code =}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
<T> R eq(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R ne(Object value);
|
||||
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R ne(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R ne(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R ne(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* 大于 {@code >}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R gt(Object value);
|
||||
|
||||
/**
|
||||
* 大于 {@code >}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R gt(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 大于 {@code >}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R gt(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* 大于 {@code >}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R gt(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* 大于等于 {@code >=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R ge(Object value);
|
||||
|
||||
/**
|
||||
* 大于等于 {@code >=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R ge(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 大于等于 {@code >=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R ge(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* 大于等于 {@code >=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R ge(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* 小于 {@code <}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R lt(Object value);
|
||||
|
||||
/**
|
||||
* 小于 {@code <}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R lt(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 小于 {@code <}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R lt(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* 小于 {@code <}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R lt(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* 小于等于 {@code <=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R le(Object value);
|
||||
|
||||
/**
|
||||
* 小于等于 {@code <=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R le(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 小于等于 {@code <=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R le(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* 小于等于 {@code <=}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R le(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R in(Object... value);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R in(Object[] value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R in(Object[] value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R in(T[] value, Predicate<T[]> isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R in(Collection<?> value);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R in(Collection<?> value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R in(Collection<?> value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T extends Collection<?>> R in(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param queryWrapper 子查询值
|
||||
*/
|
||||
R in(QueryWrapper queryWrapper);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param queryWrapper 子查询值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R in(QueryWrapper queryWrapper, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code IN(value)}
|
||||
*
|
||||
* @param queryWrapper 子查询值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R in(QueryWrapper queryWrapper, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R notIn(Object... value);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notIn(Object[] value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notIn(Object[] value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R notIn(T[] value, Predicate<T[]> isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R notIn(Collection<?> value);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notIn(Collection<?> value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notIn(Collection<?> value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T extends Collection<?>> R notIn(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param queryWrapper 子查询值
|
||||
*/
|
||||
R notIn(QueryWrapper queryWrapper);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param queryWrapper 子查询值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notIn(QueryWrapper queryWrapper, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT IN(value)}
|
||||
*
|
||||
* @param queryWrapper 子查询值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notIn(QueryWrapper queryWrapper, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
*/
|
||||
R between(Object start, Object end);
|
||||
|
||||
/**
|
||||
* {@code BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R between(Object start, Object end, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R between(Object start, Object end, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<S, E> R between(S start, E end, BiPredicate<S, E> isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
*/
|
||||
R notBetween(Object start, Object end);
|
||||
|
||||
/**
|
||||
* {@code NOT BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notBetween(Object start, Object end, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notBetween(Object start, Object end, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT BETWEEN start AND end}
|
||||
*
|
||||
* @param start 开始的值
|
||||
* @param end 结束的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<S, E> R notBetween(S start, E end, BiPredicate<S, E> isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R like(Object value);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R like(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R like(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R like(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R likeLeft(Object value);
|
||||
|
||||
/**
|
||||
* {@code LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R likeLeft(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R likeLeft(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R likeLeft(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R likeRight(Object value);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R likeRight(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R likeRight(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R likeRight(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R notLike(Object value);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notLike(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notLike(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R notLike(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R notLikeLeft(Object value);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notLikeLeft(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notLikeLeft(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE value%}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R notLikeLeft(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
*/
|
||||
R notLikeRight(Object value);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notLikeRight(Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R notLikeRight(Object value, BooleanSupplier isEffective);
|
||||
|
||||
/**
|
||||
* {@code NOT LIKE %value}
|
||||
*
|
||||
* @param value 条件的值
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
<T> R notLikeRight(T value, Predicate<T> isEffective);
|
||||
|
||||
/**
|
||||
* {@code IS NULL}
|
||||
*/
|
||||
default R isNull() {
|
||||
return isNull(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code IS NULL}
|
||||
*
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R isNull(boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code IS NULL}
|
||||
*
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
default R isNull(BooleanSupplier isEffective) {
|
||||
return isNull(isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code IS NOT NULL}
|
||||
*/
|
||||
default R isNotNull() {
|
||||
return isNotNull(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code IS NOT NULL}
|
||||
*
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
R isNotNull(boolean isEffective);
|
||||
|
||||
/**
|
||||
* {@code IS NOT NULL}
|
||||
*
|
||||
* @param isEffective 是否有效
|
||||
*/
|
||||
default R isNotNull(BooleanSupplier isEffective) {
|
||||
return isNotNull(isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -17,6 +17,7 @@ package com.mybatisflex.core.query;
|
||||
|
||||
|
||||
import com.mybatisflex.core.constant.SqlConsts;
|
||||
import com.mybatisflex.core.constant.SqlOperator;
|
||||
import com.mybatisflex.core.dialect.IDialect;
|
||||
import com.mybatisflex.core.exception.FlexExceptions;
|
||||
import com.mybatisflex.core.util.ClassUtil;
|
||||
@ -70,7 +71,12 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
|
||||
return condition;
|
||||
}
|
||||
|
||||
public QueryCondition() {
|
||||
public static QueryCondition create(QueryColumn queryColumn, SqlOperator logic, Object value) {
|
||||
QueryCondition condition = new QueryCondition();
|
||||
condition.setColumn(queryColumn);
|
||||
condition.setLogic(logic.getValue());
|
||||
condition.setValue(value);
|
||||
return condition;
|
||||
}
|
||||
|
||||
public QueryColumn getColumn() {
|
||||
|
||||
@ -20,9 +20,10 @@ import com.mybatisflex.core.util.LambdaUtil;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
public class QueryConditionBuilder<Wrapper extends QueryWrapper> implements Conditional<Wrapper> {
|
||||
|
||||
private final Wrapper queryWrapper;
|
||||
private final QueryColumn queryColumn;
|
||||
@ -35,479 +36,614 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
this.connector = connector;
|
||||
}
|
||||
|
||||
/**
|
||||
* equals
|
||||
*
|
||||
* @param value
|
||||
*/
|
||||
private void addWhereQueryCondition(QueryCondition queryCondition) {
|
||||
queryWrapper.addWhereQueryCondition(queryCondition, connector);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper eq(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.eq(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.eq(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
public <T> Wrapper eq(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.eq(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper eq(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.eq(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper eq(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.eq(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper eq(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.eq(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 等于 {@code =}
|
||||
*/
|
||||
public <T> Wrapper eq(LambdaGetter<T> value) {
|
||||
return eq(LambdaUtil.getQueryColumn(value));
|
||||
return eq(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 等于 {@code =}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper eq(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.eq(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
public <T> Wrapper eq(LambdaGetter<T> value, boolean isEffective) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* not equals !=
|
||||
*
|
||||
* @param value
|
||||
* 等于 {@code =}
|
||||
*/
|
||||
public <T> Wrapper eq(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper ne(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ne(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.ne(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper ne(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ne(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper ne(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ne(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper ne(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ne(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper ne(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ne(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*/
|
||||
public <T> Wrapper ne(LambdaGetter<T> value) {
|
||||
return ne(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper ne(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ne(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* like %%
|
||||
*
|
||||
* @param value
|
||||
*/
|
||||
public Wrapper like(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.like(value), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper like(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.like(value, when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
public Wrapper likeLeft(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.likeLeft(value), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper likeLeft(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.likeLeft(value, when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
public Wrapper likeRight(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.likeRight(value), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper likeRight(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.likeRight(value, when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
return ne(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于 greater than
|
||||
*
|
||||
* @param value
|
||||
* 不等于 {@code !=}
|
||||
*/
|
||||
public <T> Wrapper ne(LambdaGetter<T> value, boolean isEffective) {
|
||||
return ne(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 不等于 {@code !=}
|
||||
*/
|
||||
public <T> Wrapper ne(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return ne(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper gt(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.gt(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.gt(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper gt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.gt(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper gt(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.gt(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper gt(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.gt(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper gt(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.gt(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于 {@code >}
|
||||
*/
|
||||
public <T> Wrapper gt(LambdaGetter<T> value) {
|
||||
return gt(LambdaUtil.getQueryColumn(value));
|
||||
return gt(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 大于 {@code >}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper gt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.gt(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
public <T> Wrapper gt(LambdaGetter<T> value, boolean isEffective) {
|
||||
return gt(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 大于等于 greater or equal
|
||||
*
|
||||
* @param value
|
||||
* 大于 {@code >}
|
||||
*/
|
||||
public <T> Wrapper gt(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return gt(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper ge(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ge(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.ge(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper ge(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ge(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper ge(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ge(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper ge(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ge(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper ge(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.ge(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 大于等于 {@code >=}
|
||||
*/
|
||||
public <T> Wrapper ge(LambdaGetter<T> value) {
|
||||
return ge(LambdaUtil.getQueryColumn(value));
|
||||
return eq(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 大于等于 {@code >=}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper ge(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ge(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
public <T> Wrapper ge(LambdaGetter<T> value, boolean isEffective) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于 less than
|
||||
*
|
||||
* @param value
|
||||
* 大于等于 {@code >=}
|
||||
*/
|
||||
public <T> Wrapper ge(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return ge(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper lt(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.lt(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.lt(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper lt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.lt(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper lt(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.lt(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper lt(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.lt(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper lt(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.lt(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于 {@code <}
|
||||
*/
|
||||
public <T> Wrapper lt(LambdaGetter<T> value) {
|
||||
return lt(LambdaUtil.getQueryColumn(value));
|
||||
return lt(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 小于 {@code <}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper lt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.lt(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
public <T> Wrapper lt(LambdaGetter<T> value, boolean isEffective) {
|
||||
return lt(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于等于 less or equal
|
||||
*
|
||||
* @param value
|
||||
* 小于 {@code <}
|
||||
*/
|
||||
public <T> Wrapper lt(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return lt(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper le(Object value) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.le(value), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.le(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
public <T> Wrapper le(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.le(value, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper le(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.le(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper le(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.le(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper le(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.le(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小于等于 {@code <=}
|
||||
*/
|
||||
public <T> Wrapper le(LambdaGetter<T> value) {
|
||||
return le(LambdaUtil.getQueryColumn(value));
|
||||
return le(LambdaUtil.getQueryColumn(value), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
* 小于等于 {@code <=}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper le(LambdaGetter<T> value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.le(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* IS NULL
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Wrapper isNull() {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.isNull(), connector);
|
||||
return queryWrapper;
|
||||
public <T> Wrapper le(LambdaGetter<T> value, boolean isEffective) {
|
||||
return le(LambdaUtil.getQueryColumn(value), isEffective);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
* 小于等于 {@code <=}
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper isNull(Predicate<T> when) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.isNull(when), connector);
|
||||
public <T> Wrapper le(LambdaGetter<T> value, BooleanSupplier isEffective) {
|
||||
return le(LambdaUtil.getQueryColumn(value), isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper in(Object... value) {
|
||||
addWhereQueryCondition(queryColumn.in(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* IS NOT NULL
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public Wrapper isNotNull() {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.isNotNull(), connector);
|
||||
@Override
|
||||
public Wrapper in(Object[] value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper isNotNull(Predicate<T> when) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.isNotNull(when), connector);
|
||||
@Override
|
||||
public Wrapper in(Object[] value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* in arrays
|
||||
*
|
||||
* @param arrays
|
||||
* @return
|
||||
*/
|
||||
public Wrapper in(Object... arrays) {
|
||||
if (arrays != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.in(arrays), connector);
|
||||
}
|
||||
@Override
|
||||
public <T> Wrapper in(T[] value, Predicate<T[]> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper in(T[] arrays, Predicate<T[]> when) {
|
||||
//忽略 QueryWrapper.in("name", null) 的情况
|
||||
if (arrays != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.in(arrays, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper in(Collection<?> value) {
|
||||
addWhereQueryCondition(queryColumn.in(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* in child select
|
||||
*
|
||||
* @param queryWrapper
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Wrapper in(Collection<?> value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper in(Collection<?> value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Collection<?>> Wrapper in(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper in(QueryWrapper queryWrapper) {
|
||||
if (queryWrapper != null) {
|
||||
this.queryWrapper.addWhereQueryCondition(queryColumn.in(queryWrapper), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.in(queryWrapper));
|
||||
return this.queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper in(QueryWrapper queryWrapper, Predicate<T> when) {
|
||||
if (queryWrapper != null) {
|
||||
this.queryWrapper.addWhereQueryCondition(queryColumn.in(queryWrapper, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper in(QueryWrapper queryWrapper, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(queryWrapper, isEffective));
|
||||
return this.queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper in(QueryWrapper queryWrapper, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.in(queryWrapper, isEffective));
|
||||
return this.queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* in Collection
|
||||
*
|
||||
* @param collection
|
||||
* @return
|
||||
*/
|
||||
public Wrapper in(Collection<?> collection) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.in(collection), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper notIn(Object... value) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T extends Collection<?>> Wrapper in(T collection, Predicate<T> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.in(collection, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper notIn(Object[] value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* not int arrays
|
||||
*
|
||||
* @param arrays
|
||||
* @return
|
||||
*/
|
||||
public Wrapper notIn(Object... arrays) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notIn(arrays), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper notIn(Object[] value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper notIn(T[] arrays, Predicate<T[]> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notIn(arrays, when), connector);
|
||||
}
|
||||
@Override
|
||||
public <T> Wrapper notIn(T[] value, Predicate<T[]> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* not in Collection
|
||||
*
|
||||
* @param collection
|
||||
* @return
|
||||
*/
|
||||
public Wrapper notIn(Collection<?> collection) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notIn(collection), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper notIn(Collection<?> value) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T extends Collection<?>> Wrapper notIn(T collection, Predicate<T> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notIn(collection, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper notIn(Collection<?> value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* not in child select
|
||||
*
|
||||
* @param queryWrapper
|
||||
*/
|
||||
@Override
|
||||
public Wrapper notIn(Collection<?> value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Collection<?>> Wrapper notIn(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notIn(QueryWrapper queryWrapper) {
|
||||
if (queryWrapper != null) {
|
||||
this.queryWrapper.addWhereQueryCondition(queryColumn.notIn(queryWrapper), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.notIn(queryWrapper));
|
||||
return this.queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper notIn(QueryWrapper queryWrapper, Predicate<T> when) {
|
||||
if (queryWrapper != null) {
|
||||
this.queryWrapper.addWhereQueryCondition(queryColumn.notIn(queryWrapper, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper notIn(QueryWrapper queryWrapper, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(queryWrapper, isEffective));
|
||||
return this.queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notIn(QueryWrapper queryWrapper, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notIn(queryWrapper, isEffective));
|
||||
return this.queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* between
|
||||
*
|
||||
* @param start
|
||||
* @param end
|
||||
*/
|
||||
@Override
|
||||
public Wrapper between(Object start, Object end) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.between(start, end), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.between(start, end));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
public <S, E> Wrapper between(S start, E end, BiPredicate<S, E> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.between(start, end, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper between(Object start, Object end, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.between(start, end, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper between(Object start, Object end, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.between(start, end, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* not between
|
||||
*
|
||||
* @param start
|
||||
* @param end
|
||||
*/
|
||||
@Override
|
||||
public <S, E> Wrapper between(S start, E end, BiPredicate<S, E> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.between(start, end, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notBetween(Object start, Object end) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notBetween(start, end), connector);
|
||||
}
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <S, E> Wrapper notBetween(S start, E end, BiPredicate<S, E> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notBetween(start, end, when), connector);
|
||||
}
|
||||
@Override
|
||||
public Wrapper notBetween(Object start, Object end, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notBetween(Object start, Object end, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <S, E> Wrapper notBetween(S start, E end, BiPredicate<S, E> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notBetween(start, end, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper like(Object value) {
|
||||
addWhereQueryCondition(queryColumn.like(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper like(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.like(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper like(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.like(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper like(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.like(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper likeLeft(Object value) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper likeLeft(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper likeLeft(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper likeLeft(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeLeft(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper likeRight(Object value) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper likeRight(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper likeRight(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper likeRight(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.likeRight(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLike(Object value) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLike(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLike(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper notLike(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLike(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLikeLeft(Object value) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLikeLeft(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLikeLeft(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper notLikeLeft(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeLeft(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLikeRight(Object value) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLikeRight(Object value, boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper notLikeRight(Object value, BooleanSupplier isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Wrapper notLikeRight(T value, Predicate<T> isEffective) {
|
||||
addWhereQueryCondition(queryColumn.notLikeRight(value, isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper isNull(boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.isNull(isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Wrapper isNotNull(boolean isEffective) {
|
||||
addWhereQueryCondition(queryColumn.isNotNull(isEffective));
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ import com.mybatisflex.core.query.QueryColumn;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.core.query.QueryWrapperAdapter;
|
||||
import com.mybatisflex.core.table.*;
|
||||
import com.mybatisflex.core.update.PropertySetter;
|
||||
import com.mybatisflex.core.util.LambdaGetter;
|
||||
import com.mybatisflex.core.util.SqlUtil;
|
||||
|
||||
@ -37,7 +38,7 @@ import java.util.stream.Collectors;
|
||||
* @author 王帅
|
||||
* @since 2023-07-22
|
||||
*/
|
||||
public class DbChain extends QueryWrapperAdapter<DbChain> {
|
||||
public class DbChain extends QueryWrapperAdapter<DbChain> implements PropertySetter<DbChain> {
|
||||
|
||||
private String schema;
|
||||
private String tableName;
|
||||
@ -108,18 +109,39 @@ public class DbChain extends QueryWrapperAdapter<DbChain> {
|
||||
return this;
|
||||
}
|
||||
|
||||
public DbChain set(String column, Object value) {
|
||||
getRow().set(column, value);
|
||||
@Override
|
||||
public DbChain set(String property, Object value, boolean isEffective) {
|
||||
getRow().set(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
public DbChain set(QueryColumn column, Object value) {
|
||||
getRow().set(column, value);
|
||||
@Override
|
||||
public DbChain set(QueryColumn property, Object value, boolean isEffective) {
|
||||
getRow().set(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
public <T> DbChain set(LambdaGetter<T> column, Object value) {
|
||||
getRow().set(column, value);
|
||||
@Override
|
||||
public <T> DbChain set(LambdaGetter<T> property, Object value, boolean isEffective) {
|
||||
getRow().set(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DbChain setRaw(String property, Object value, boolean isEffective) {
|
||||
getRow().set(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DbChain setRaw(QueryColumn property, Object value, boolean isEffective) {
|
||||
getRow().set(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> DbChain setRaw(LambdaGetter<T> property, Object value, boolean isEffective) {
|
||||
getRow().set(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@ -29,6 +29,8 @@ import java.sql.Time;
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class Row extends LinkedHashMap<String, Object> implements UpdateWrapper {
|
||||
|
||||
@ -93,8 +95,73 @@ public class Row extends LinkedHashMap<String, Object> implements UpdateWrapper
|
||||
return row;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row set(String property, Object value, boolean isEffective) {
|
||||
if (!isEffective) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (StringUtil.isBlank(property)) {
|
||||
throw new IllegalArgumentException("key column not be null or empty.");
|
||||
}
|
||||
|
||||
SqlUtil.keepColumnSafely(property);
|
||||
|
||||
if (value instanceof QueryWrapper || value instanceof QueryCondition || value instanceof QueryColumn) {
|
||||
super.put(property, new RawValue(value));
|
||||
} else {
|
||||
super.put(property, value);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row set(QueryColumn property, Object value, boolean isEffective) {
|
||||
if (!isEffective) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (value instanceof QueryWrapper || value instanceof QueryCondition || value instanceof QueryColumn) {
|
||||
super.put(property.getName(), new RawValue(value));
|
||||
} else {
|
||||
super.put(property.getName(), value);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Row set(LambdaGetter<T> property, Object value, boolean isEffective) {
|
||||
if (!isEffective) {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (value instanceof QueryWrapper || value instanceof QueryCondition || value instanceof QueryColumn) {
|
||||
super.put(LambdaUtil.getFieldName(property), new RawValue(value));
|
||||
} else {
|
||||
super.put(LambdaUtil.getFieldName(property), value);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row setRaw(String property, Object value, boolean isEffective) {
|
||||
return (Row) UpdateWrapper.super.setRaw(property, value, isEffective);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row setRaw(QueryColumn property, Object value, boolean isEffective) {
|
||||
return (Row) UpdateWrapper.super.setRaw(property, value, isEffective);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Row setRaw(LambdaGetter<T> property, Object value, boolean isEffective) {
|
||||
return (Row) UpdateWrapper.super.setRaw(property, value, isEffective);
|
||||
}
|
||||
|
||||
/*@Override
|
||||
public Row set(String column, Object value) {
|
||||
if (StringUtil.isBlank(column)) {
|
||||
throw new IllegalArgumentException("key column not be null or empty.");
|
||||
@ -119,8 +186,97 @@ public class Row extends LinkedHashMap<String, Object> implements UpdateWrapper
|
||||
super.put(queryColumn.getName(), value);
|
||||
}
|
||||
return this;
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public Row set(String property, Object value) {
|
||||
return set(property, value, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row set(String property, Object value, BooleanSupplier isEffective) {
|
||||
return set(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <V> Row set(String property, V value, Predicate<V> isEffective) {
|
||||
return set(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row set(QueryColumn property, Object value) {
|
||||
return set(property, value, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row set(QueryColumn property, Object value, BooleanSupplier isEffective) {
|
||||
return set(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <V> Row set(QueryColumn property, V value, Predicate<V> isEffective) {
|
||||
return set(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Row set(LambdaGetter<T> property, Object value) {
|
||||
return set(property, value, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Row set(LambdaGetter<T> property, Object value, BooleanSupplier isEffective) {
|
||||
return set(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> Row set(LambdaGetter<T> property, V value, Predicate<V> isEffective) {
|
||||
return set(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row setRaw(String property, Object value) {
|
||||
return setRaw(property, value, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row setRaw(String property, Object value, BooleanSupplier isEffective) {
|
||||
return setRaw(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <V> Row setRaw(String property, V value, Predicate<V> isEffective) {
|
||||
return setRaw(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row setRaw(QueryColumn property, Object value) {
|
||||
return setRaw(property, value, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Row setRaw(QueryColumn property, Object value, BooleanSupplier isEffective) {
|
||||
return setRaw(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <V> Row setRaw(QueryColumn property, V value, Predicate<V> isEffective) {
|
||||
return setRaw(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Row setRaw(LambdaGetter<T> property, Object value) {
|
||||
return setRaw(property, value, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Row setRaw(LambdaGetter<T> property, Object value, BooleanSupplier isEffective) {
|
||||
return setRaw(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V> Row setRaw(LambdaGetter<T> property, V value, Predicate<V> isEffective) {
|
||||
return setRaw(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
public Object get(String key, Object defaultValue) {
|
||||
Object result = super.get(key);
|
||||
|
||||
@ -0,0 +1,280 @@
|
||||
/*
|
||||
* Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com).
|
||||
* <p>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.mybatisflex.core.update;
|
||||
|
||||
import com.mybatisflex.core.query.QueryColumn;
|
||||
import com.mybatisflex.core.util.LambdaGetter;
|
||||
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
* 属性设置接口。
|
||||
*
|
||||
* @param <R> 链式调用返回值类型
|
||||
* @author 王帅
|
||||
* @since 2023-08-16
|
||||
*/
|
||||
public interface PropertySetter<R> {
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
*/
|
||||
default R set(String property, Object value) {
|
||||
return set(property, value, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
R set(String property, Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default R set(String property, Object value, BooleanSupplier isEffective) {
|
||||
return set(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <V> R set(String property, V value, Predicate<V> isEffective) {
|
||||
return set(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
*/
|
||||
default R set(QueryColumn property, Object value) {
|
||||
return set(property, value, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
R set(QueryColumn property, Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default R set(QueryColumn property, Object value, BooleanSupplier isEffective) {
|
||||
return set(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <V> R set(QueryColumn property, V value, Predicate<V> isEffective) {
|
||||
return set(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
*/
|
||||
default <T> R set(LambdaGetter<T> property, Object value) {
|
||||
return set(property, value, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
<T> R set(LambdaGetter<T> property, Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <T> R set(LambdaGetter<T> property, Object value, BooleanSupplier isEffective) {
|
||||
return set(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应参数值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 参数值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <T, V> R set(LambdaGetter<T> property, V value, Predicate<V> isEffective) {
|
||||
return set(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
*/
|
||||
default R setRaw(String property, Object value) {
|
||||
return setRaw(property, value, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
R setRaw(String property, Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default R setRaw(String property, Object value, BooleanSupplier isEffective) {
|
||||
return setRaw(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <V> R setRaw(String property, V value, Predicate<V> isEffective) {
|
||||
return setRaw(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
*/
|
||||
default R setRaw(QueryColumn property, Object value) {
|
||||
return setRaw(property, value, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
R setRaw(QueryColumn property, Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default R setRaw(QueryColumn property, Object value, BooleanSupplier isEffective) {
|
||||
return setRaw(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <V> R setRaw(QueryColumn property, V value, Predicate<V> isEffective) {
|
||||
return setRaw(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
*/
|
||||
default <T> R setRaw(LambdaGetter<T> property, Object value) {
|
||||
return setRaw(property, value, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
<T> R setRaw(LambdaGetter<T> property, Object value, boolean isEffective);
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <T> R setRaw(LambdaGetter<T> property, Object value, BooleanSupplier isEffective) {
|
||||
return setRaw(property, value, isEffective.getAsBoolean());
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置字段对应原生值。
|
||||
*
|
||||
* @param property 字段名
|
||||
* @param value 原生值
|
||||
* @param isEffective 是否生效
|
||||
*/
|
||||
default <T, V> R setRaw(LambdaGetter<T> property, V value, Predicate<V> isEffective) {
|
||||
return setRaw(property, value, isEffective.test(value));
|
||||
}
|
||||
|
||||
}
|
||||
@ -37,7 +37,7 @@ import java.lang.reflect.Type;
|
||||
* @since 2023-07-25
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public class UpdateChain<T> extends QueryWrapperAdapter<UpdateChain<T>> {
|
||||
public class UpdateChain<T> extends QueryWrapperAdapter<UpdateChain<T>> implements PropertySetter<UpdateChain<T>> {
|
||||
|
||||
private final BaseMapper<T> baseMapper;
|
||||
private final T entity;
|
||||
@ -82,64 +82,40 @@ public class UpdateChain<T> extends QueryWrapperAdapter<UpdateChain<T>> {
|
||||
return new UpdateChain<>(baseMapper);
|
||||
}
|
||||
|
||||
public UpdateChain<T> set(String property, Object value, boolean condition) {
|
||||
entityWrapper.set(property, value, condition);
|
||||
@Override
|
||||
public UpdateChain<T> set(String property, Object value, boolean isEffective) {
|
||||
entityWrapper.set(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
public UpdateChain<T> set(String property, Object value) {
|
||||
entityWrapper.set(property, value);
|
||||
@Override
|
||||
public UpdateChain<T> set(QueryColumn queryColumn, Object value, boolean isEffective) {
|
||||
entityWrapper.set(queryColumn, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
public <L> UpdateChain<T> set(LambdaGetter<L> getter, Object value, boolean condition) {
|
||||
entityWrapper.set(getter, value, condition);
|
||||
return this;
|
||||
}
|
||||
|
||||
public <L> UpdateChain<T> set(LambdaGetter<L> getter, Object value) {
|
||||
entityWrapper.set(getter, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public UpdateChain<T> set(QueryColumn queryColumn, Object value, boolean condition) {
|
||||
entityWrapper.set(queryColumn, value, condition);
|
||||
@Override
|
||||
public <L> UpdateChain<T> set(LambdaGetter<L> getter, Object value, boolean isEffective) {
|
||||
entityWrapper.set(getter, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public UpdateChain<T> set(QueryColumn queryColumn, Object value) {
|
||||
entityWrapper.set(queryColumn, value);
|
||||
@Override
|
||||
public UpdateChain<T> setRaw(String property, Object value, boolean isEffective) {
|
||||
entityWrapper.setRaw(property, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
public UpdateChain<T> setRaw(String property, Object value, boolean condition) {
|
||||
entityWrapper.setRaw(property, value, condition);
|
||||
@Override
|
||||
public UpdateChain<T> setRaw(QueryColumn queryColumn, Object value, boolean isEffective) {
|
||||
entityWrapper.setRaw(queryColumn, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
public UpdateChain<T> setRaw(String property, Object value) {
|
||||
entityWrapper.setRaw(property, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public <L> UpdateChain<T> setRaw(LambdaGetter<L> getter, Object value, boolean condition) {
|
||||
entityWrapper.setRaw(getter, value, condition);
|
||||
return this;
|
||||
}
|
||||
|
||||
public <L> UpdateChain<T> setRaw(LambdaGetter<L> getter, Object value) {
|
||||
entityWrapper.setRaw(getter, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public UpdateChain<T> setRaw(QueryColumn queryColumn, Object value, boolean condition) {
|
||||
entityWrapper.setRaw(queryColumn, value, condition);
|
||||
return this;
|
||||
}
|
||||
|
||||
public UpdateChain<T> setRaw(QueryColumn queryColumn, Object value) {
|
||||
entityWrapper.set(queryColumn, value);
|
||||
@Override
|
||||
public <L> UpdateChain<T> setRaw(LambdaGetter<L> getter, Object value, boolean isEffective) {
|
||||
entityWrapper.setRaw(getter, value, isEffective);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@ -29,103 +29,79 @@ import java.util.Map;
|
||||
/**
|
||||
* @author michael
|
||||
*/
|
||||
public interface UpdateWrapper extends Serializable {
|
||||
public interface UpdateWrapper extends PropertySetter<UpdateWrapper>, Serializable {
|
||||
|
||||
default Map<String, Object> getUpdates() {
|
||||
ModifyAttrsRecordHandler handler = (ModifyAttrsRecordHandler) ((ProxyObject) this).getHandler();
|
||||
return handler.getUpdates();
|
||||
}
|
||||
|
||||
default UpdateWrapper set(String property, Object value, boolean condition) {
|
||||
if (condition) {
|
||||
return set(property, value);
|
||||
@Override
|
||||
default UpdateWrapper set(String property, Object value, boolean isEffective) {
|
||||
if (isEffective) {
|
||||
if (value instanceof QueryWrapper
|
||||
|| value instanceof QueryColumn
|
||||
|| value instanceof QueryCondition) {
|
||||
getUpdates().put(property, new RawValue(value));
|
||||
} else {
|
||||
getUpdates().put(property, value);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
default UpdateWrapper set(String property, Object value) {
|
||||
if (value instanceof QueryWrapper || value instanceof QueryCondition || value instanceof QueryColumn) {
|
||||
setRaw(property, value);
|
||||
} else {
|
||||
getUpdates().put(property, value);
|
||||
@Override
|
||||
default UpdateWrapper set(QueryColumn property, Object value, boolean isEffective) {
|
||||
if (isEffective) {
|
||||
if (value instanceof QueryWrapper
|
||||
|| value instanceof QueryColumn
|
||||
|| value instanceof QueryCondition) {
|
||||
getUpdates().put(property.getName(), new RawValue(value));
|
||||
} else {
|
||||
getUpdates().put(property.getName(), value);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
default <T> UpdateWrapper set(LambdaGetter<T> getter, Object value, boolean condition) {
|
||||
if (condition) {
|
||||
return set(getter, value);
|
||||
@Override
|
||||
default <T> UpdateWrapper set(LambdaGetter<T> property, Object value, boolean isEffective) {
|
||||
if (isEffective) {
|
||||
if (value instanceof QueryWrapper
|
||||
|| value instanceof QueryColumn
|
||||
|| value instanceof QueryCondition) {
|
||||
getUpdates().put(LambdaUtil.getFieldName(property), new RawValue(value));
|
||||
} else {
|
||||
getUpdates().put(LambdaUtil.getFieldName(property), value);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
default <T> UpdateWrapper set(LambdaGetter<T> getter, Object value) {
|
||||
if (value instanceof QueryWrapper || value instanceof QueryCondition || value instanceof QueryColumn) {
|
||||
setRaw(getter, value);
|
||||
} else {
|
||||
getUpdates().put(LambdaUtil.getFieldName(getter), value);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
default <T> UpdateWrapper set(QueryColumn queryColumn, Object value, boolean condition) {
|
||||
if (condition) {
|
||||
return set(queryColumn, value);
|
||||
@Override
|
||||
default UpdateWrapper setRaw(String property, Object value, boolean isEffective) {
|
||||
if (isEffective) {
|
||||
getUpdates().put(property, new RawValue(value));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
default <T> UpdateWrapper set(QueryColumn queryColumn, Object value) {
|
||||
if (value instanceof QueryWrapper || value instanceof QueryCondition || value instanceof QueryColumn) {
|
||||
setRaw(queryColumn, value);
|
||||
} else {
|
||||
getUpdates().put(queryColumn.getName(), value);
|
||||
@Override
|
||||
default UpdateWrapper setRaw(QueryColumn property, Object value, boolean isEffective) {
|
||||
if (isEffective) {
|
||||
getUpdates().put(property.getName(), new RawValue(value));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
default UpdateWrapper setRaw(String property, Object value, boolean condition) {
|
||||
if (condition) {
|
||||
return setRaw(property, value);
|
||||
@Override
|
||||
default <T> UpdateWrapper setRaw(LambdaGetter<T> property, Object value, boolean isEffective) {
|
||||
if (isEffective) {
|
||||
getUpdates().put(LambdaUtil.getFieldName(property), new RawValue(value));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
default UpdateWrapper setRaw(String property, Object value) {
|
||||
getUpdates().put(property, new RawValue(value));
|
||||
return this;
|
||||
}
|
||||
|
||||
default <T> UpdateWrapper setRaw(LambdaGetter<T> getter, Object value, boolean condition) {
|
||||
if (condition) {
|
||||
return setRaw(getter, value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
default <T> UpdateWrapper setRaw(LambdaGetter<T> getter, Object value) {
|
||||
getUpdates().put(LambdaUtil.getFieldName(getter), new RawValue(value));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
default <T> UpdateWrapper setRaw(QueryColumn queryColumn, Object value, boolean condition) {
|
||||
if (condition) {
|
||||
return setRaw(queryColumn, value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
default <T> UpdateWrapper setRaw(QueryColumn queryColumn, Object value) {
|
||||
getUpdates().put(queryColumn.getName(), new RawValue(value));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
static UpdateWrapper of(Object entity) {
|
||||
if (entity instanceof UpdateWrapper) {
|
||||
return (UpdateWrapper) entity;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user