mirror of
https://gitee.com/mybatis-flex/mybatis-flex.git
synced 2025-12-06 16:48:24 +08:00
commit
1cefe509bc
@ -22,6 +22,7 @@ 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.Predicate;
|
||||
|
||||
/**
|
||||
@ -49,7 +50,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R eq(Object value, Predicate<T> when) {
|
||||
public <T> R eq(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.eq(value, when), connector);
|
||||
}
|
||||
@ -60,8 +61,15 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return eq(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R eq(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.eq(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R ne(Object value) {
|
||||
@ -71,7 +79,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R ne(Object value, Predicate<T> when) {
|
||||
public <T> R ne(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ne(value, when), connector);
|
||||
}
|
||||
@ -82,8 +90,15 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return ne(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R ne(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return ne(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ne(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R like(Object value) {
|
||||
@ -93,7 +108,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R like(Object value, Predicate<T> when) {
|
||||
public <T> R like(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.like(value, when), connector);
|
||||
}
|
||||
@ -107,7 +122,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R likeLeft(Object value, Predicate<T> when) {
|
||||
public <T> R likeLeft(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.likeLeft(value, when), connector);
|
||||
}
|
||||
@ -121,7 +136,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R likeRight(Object value, Predicate<T> when) {
|
||||
public <T> R likeRight(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.likeRight(value, when), connector);
|
||||
}
|
||||
@ -135,7 +150,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R gt(Object value, Predicate<T> when) {
|
||||
public <T> R gt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.gt(value, when), connector);
|
||||
}
|
||||
@ -146,8 +161,15 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return gt(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R gt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return gt(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.gt(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R ge(Object value) {
|
||||
@ -157,7 +179,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R ge(Object value, Predicate<T> when) {
|
||||
public <T> R ge(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ge(value, when), connector);
|
||||
}
|
||||
@ -168,8 +190,15 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return ge(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R ge(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return ge(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.ge(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R lt(Object value) {
|
||||
@ -179,7 +208,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R lt(Object value, Predicate<T> when) {
|
||||
public <T> R lt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.lt(value, when), connector);
|
||||
}
|
||||
@ -190,8 +219,15 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return lt(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R lt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return lt(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.lt(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R le(Object value) {
|
||||
@ -201,7 +237,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R le(Object value, Predicate<T> when) {
|
||||
public <T> R le(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.le(value, when), connector);
|
||||
}
|
||||
@ -212,8 +248,15 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return le(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R le(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return le(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.le(LambdaUtil.getQueryColumn(value)).when(when), connector);
|
||||
}
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public R isNull() {
|
||||
@ -221,6 +264,10 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R isNull(Predicate<T> when) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.isNull(when), connector);
|
||||
return queryModel;
|
||||
@ -231,6 +278,10 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R isNotNull(Predicate<T> when) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.isNotNull(when), connector);
|
||||
return queryModel;
|
||||
@ -243,7 +294,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R in(Object[] arrays, Predicate<T> when) {
|
||||
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);
|
||||
@ -258,6 +309,10 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return this.queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R in(R queryModel, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(queryModel, when), connector);
|
||||
@ -272,7 +327,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R in(Collection<?> collection, Predicate<T> when) {
|
||||
public <T extends Collection<?>> R in(T collection, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.in(collection, when), connector);
|
||||
}
|
||||
@ -286,7 +341,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R notIn(Object[] arrays, Predicate<T> when) {
|
||||
public <T> R notIn(T[] arrays, Predicate<T[]> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(arrays, when), connector);
|
||||
}
|
||||
@ -300,7 +355,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R notIn(Collection<?> collection, Predicate<T> when) {
|
||||
public <T extends Collection<?>> R notIn(T collection, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(collection, when), connector);
|
||||
}
|
||||
@ -314,6 +369,10 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return this.queryModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> R notIn(R queryModel, Predicate<T> when) {
|
||||
if (queryModel != null) {
|
||||
CPI.addWhereQueryCondition(queryModel.queryWrapper(), queryColumn.notIn(queryModel, when), connector);
|
||||
@ -328,7 +387,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R between(Object start, Object end, Predicate<T> when) {
|
||||
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);
|
||||
}
|
||||
@ -342,7 +401,7 @@ public class WhereBuilder<R extends QueryModel<R>> {
|
||||
return queryModel;
|
||||
}
|
||||
|
||||
public <T> R notBetween(Object start, Object end, Predicate<T> when) {
|
||||
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);
|
||||
}
|
||||
|
||||
@ -45,7 +45,9 @@ public class If {
|
||||
* 查看某个对象是否为空,支持数组、集合、map 等
|
||||
*
|
||||
* @param object
|
||||
* @deprecated 无泛型,多 instanceof 判断
|
||||
*/
|
||||
@Deprecated
|
||||
public static boolean notEmpty(Object object) {
|
||||
if (object == null) {
|
||||
return false;
|
||||
@ -74,7 +76,9 @@ public class If {
|
||||
* 查看某个对象是否为空数据 或者 null
|
||||
*
|
||||
* @param object
|
||||
* @deprecated 无泛型,多 instanceof 判断
|
||||
*/
|
||||
@Deprecated
|
||||
public static boolean isEmpty(Object object) {
|
||||
return !notEmpty(object);
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@ import com.mybatisflex.core.util.*;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.function.BiPredicate;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
/**
|
||||
@ -147,11 +148,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
}
|
||||
|
||||
|
||||
public <T> QueryCondition eq(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition eq(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.EQUALS, value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.EQUALS, value).when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -167,11 +168,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_EQUALS, value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition ne(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition ne(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.NOT_EQUALS, value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.NOT_EQUALS, value).when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -187,11 +188,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, "%" + value + "%");
|
||||
}
|
||||
|
||||
public <T> QueryCondition like(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition like(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, "%" + value + "%").when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, "%" + value + "%").when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -202,11 +203,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, value + "%");
|
||||
}
|
||||
|
||||
public <T> QueryCondition likeLeft(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition likeLeft(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, value + "%").when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, value + "%").when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -217,11 +218,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, "%" + value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition likeRight(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition likeRight(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, "%" + value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, "%" + value).when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -232,11 +233,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition likeRaw(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition likeRaw(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.LIKE, value).when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -252,11 +253,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, "%" + value + "%");
|
||||
}
|
||||
|
||||
public <T> QueryCondition notLike(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition notLike(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, "%" + value + "%").when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, "%" + value + "%").when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -267,11 +268,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, value + "%");
|
||||
}
|
||||
|
||||
public <T> QueryCondition notLikeLeft(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition notLikeLeft(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, value + "%").when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, value + "%").when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -282,11 +283,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, "%" + value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition notLikeRight(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition notLikeRight(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, "%" + value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.NOT_LIKE, "%" + value).when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -302,11 +303,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.GT, value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition gt(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition gt(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.GT, value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.GT, value).when(fn.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -321,11 +322,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.GE, value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition ge(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition ge(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.GE, value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.GE, value).when(fn.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -340,11 +341,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.LT, value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition lt(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition lt(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.LT, value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.LT, value).when(fn.test(value));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -359,11 +360,11 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.LE, value);
|
||||
}
|
||||
|
||||
public <T> QueryCondition le(Object value, Predicate<T> fn) {
|
||||
public <T> QueryCondition le(T value, Predicate<T> fn) {
|
||||
if (value == null || QueryColumnBehavior.shouldIgnoreValue(value)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.create(this, SqlConsts.LE, value).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.LE, value).when(fn.test(value));
|
||||
}
|
||||
|
||||
|
||||
@ -376,6 +377,10 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.IS_NULL, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> QueryCondition isNull(Predicate<T> fn) {
|
||||
return QueryCondition.create(this, SqlConsts.IS_NULL, null).when(fn);
|
||||
}
|
||||
@ -390,6 +395,10 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.IS_NOT_NULL, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> QueryCondition isNotNull(Predicate<T> fn) {
|
||||
return QueryCondition.create(this, SqlConsts.IS_NOT_NULL, null).when(fn);
|
||||
}
|
||||
@ -415,7 +424,7 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
}
|
||||
|
||||
|
||||
public <T> QueryCondition in(Object[] arrays, Predicate<T> fn) {
|
||||
public <T> QueryCondition in(T[] arrays, Predicate<T[]> fn) {
|
||||
//忽略 QueryWrapper.in("name", null) 的情况
|
||||
if (arrays == null || arrays.length == 0 || (arrays.length == 1 && arrays[0] == null) || QueryColumnBehavior.shouldIgnoreValue(arrays)) {
|
||||
return QueryCondition.createEmpty();
|
||||
@ -425,7 +434,7 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.EQUALS, arrays[0]);
|
||||
}
|
||||
|
||||
return QueryCondition.create(this, SqlConsts.IN, arrays).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.IN, arrays).when(fn.test(arrays));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -442,6 +451,10 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> QueryCondition in(QueryWrapper queryWrapper, Predicate<T> fn) {
|
||||
if (queryWrapper == null || QueryColumnBehavior.shouldIgnoreValue(queryWrapper)) {
|
||||
return QueryCondition.createEmpty();
|
||||
@ -457,17 +470,17 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
* @return QueryCondition
|
||||
*/
|
||||
public QueryCondition in(Collection<?> collection) {
|
||||
if (collection != null && !collection.isEmpty() && !QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return in(collection.toArray());
|
||||
if (collection == null || collection.isEmpty() || QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.createEmpty();
|
||||
return in(collection.toArray());
|
||||
}
|
||||
|
||||
public <T> QueryCondition in(Collection<?> collection, Predicate<T> fn) {
|
||||
if (collection != null && !collection.isEmpty() && !QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return in(collection.toArray(), fn);
|
||||
public <T extends Collection<?>> QueryCondition in(T collection, Predicate<T> fn) {
|
||||
if (collection == null || collection.isEmpty() || QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.createEmpty();
|
||||
return in(collection.toArray()).when(fn.test(collection));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -489,7 +502,7 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_IN, arrays);
|
||||
}
|
||||
|
||||
public <T> QueryCondition notIn(Object[] arrays, Predicate<T> fn) {
|
||||
public <T> QueryCondition notIn(T[] arrays, Predicate<T[]> fn) {
|
||||
//忽略 QueryWrapper.notIn("name", null) 的情况
|
||||
if (arrays == null || arrays.length == 0 || (arrays.length == 1 && arrays[0] == null) || QueryColumnBehavior.shouldIgnoreValue(arrays)) {
|
||||
return QueryCondition.createEmpty();
|
||||
@ -499,7 +512,7 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_EQUALS, arrays[0]);
|
||||
}
|
||||
|
||||
return QueryCondition.create(this, SqlConsts.NOT_IN, arrays).when(fn);
|
||||
return QueryCondition.create(this, SqlConsts.NOT_IN, arrays).when(fn.test(arrays));
|
||||
}
|
||||
|
||||
|
||||
@ -510,17 +523,17 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
* @return QueryCondition
|
||||
*/
|
||||
public QueryCondition notIn(Collection<?> collection) {
|
||||
if (collection != null && !collection.isEmpty() && !QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return notIn(collection.toArray());
|
||||
if (collection == null || collection.isEmpty() || QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.createEmpty();
|
||||
return notIn(collection.toArray());
|
||||
}
|
||||
|
||||
public <T> QueryCondition notIn(Collection<?> collection, Predicate<T> fn) {
|
||||
if (collection != null && !collection.isEmpty() && !QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return notIn(collection.toArray(), fn);
|
||||
public <T extends Collection<?>> QueryCondition notIn(T collection, Predicate<T> fn) {
|
||||
if (collection == null || collection.isEmpty() || QueryColumnBehavior.shouldIgnoreValue(collection)) {
|
||||
return QueryCondition.createEmpty();
|
||||
}
|
||||
return QueryCondition.createEmpty();
|
||||
return notIn(collection.toArray()).when(fn.test(collection));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -536,6 +549,10 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> QueryCondition notIn(QueryWrapper queryWrapper, Predicate<T> fn) {
|
||||
if (queryWrapper == null || QueryColumnBehavior.shouldIgnoreValue(queryWrapper)) {
|
||||
return QueryCondition.createEmpty();
|
||||
@ -554,8 +571,8 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.BETWEEN, new Object[]{start, end});
|
||||
}
|
||||
|
||||
public <T> QueryCondition between(Object start, Object end, Predicate<T> fn) {
|
||||
return QueryCondition.create(this, SqlConsts.BETWEEN, new Object[]{start, end}).when(fn);
|
||||
public <S, E> QueryCondition between(S start, E end, BiPredicate<S, E> fn) {
|
||||
return QueryCondition.create(this, SqlConsts.BETWEEN, new Object[]{start, end}).when(fn.test(start, end));
|
||||
}
|
||||
|
||||
|
||||
@ -569,8 +586,8 @@ public class QueryColumn implements CloneSupport<QueryColumn> {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_BETWEEN, new Object[]{start, end});
|
||||
}
|
||||
|
||||
public <T> QueryCondition notBetween(Object start, Object end, Predicate<T> fn) {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_BETWEEN, new Object[]{start, end}).when(fn);
|
||||
public <S, E> QueryCondition notBetween(S start, E end, BiPredicate<S, E> fn) {
|
||||
return QueryCondition.create(this, SqlConsts.NOT_BETWEEN, new Object[]{start, end}).when(fn.test(start, end));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -24,8 +24,8 @@ import com.mybatisflex.core.util.ObjectUtil;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.List;
|
||||
import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class QueryCondition implements CloneSupport<QueryCondition> {
|
||||
|
||||
@ -96,17 +96,44 @@ public class QueryCondition implements CloneSupport<QueryCondition> {
|
||||
this.logic = logic;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 动态条件构造。
|
||||
*
|
||||
* @param effective 是否启用该条件
|
||||
* @return {@link QueryCondition}
|
||||
*/
|
||||
public QueryCondition when(boolean effective) {
|
||||
this.effective = effective;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void when(Supplier<Boolean> fn) {
|
||||
Boolean effective = fn.get();
|
||||
this.effective = (effective != null && effective);
|
||||
|
||||
/**
|
||||
* 动态条件构造。
|
||||
*
|
||||
* @param fn 是否启用该条件
|
||||
* @return {@link QueryCondition}
|
||||
*/
|
||||
public QueryCondition when(BooleanSupplier fn) {
|
||||
this.effective = fn.getAsBoolean();
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>动态条件构造。
|
||||
*
|
||||
* <p>推荐将 {@link Predicate} 推断写在填写的值的后面,以确保泛型对应,例如:
|
||||
* <pre>{@code
|
||||
* ACCOUNT.ID.in(idList, CollectionUtil::isNotEmpty);
|
||||
* }</pre>
|
||||
*
|
||||
* @see #when(boolean)
|
||||
* @see #when(BooleanSupplier)
|
||||
* @deprecated 由于 {@link QueryCondition} 中属性 {@link #value} 的类型为 Object
|
||||
* 类型,没有使用泛型,所以该方法泛型推断可能会出现问题。
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> QueryCondition when(Predicate<T> fn) {
|
||||
Object val = this.value;
|
||||
if ((SqlConsts.LIKE.equals(logic) || SqlConsts.NOT_LIKE.equals(logic))
|
||||
|
||||
@ -19,6 +19,7 @@ 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.Predicate;
|
||||
|
||||
public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
@ -47,7 +48,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
}
|
||||
|
||||
|
||||
public <T> Wrapper eq(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper eq(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.eq(value, when), connector);
|
||||
}
|
||||
@ -59,9 +60,15 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return eq(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper eq(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return eq(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.eq(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
@ -77,7 +84,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper ne(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper ne(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ne(value, when), connector);
|
||||
}
|
||||
@ -89,8 +96,15 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper ne(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return ne(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ne(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
@ -106,7 +120,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper like(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper like(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.like(value, when), connector);
|
||||
}
|
||||
@ -121,7 +135,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper likeLeft(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper likeLeft(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.likeLeft(value, when), connector);
|
||||
}
|
||||
@ -136,7 +150,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper likeRight(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper likeRight(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.likeRight(value, when), connector);
|
||||
}
|
||||
@ -155,7 +169,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper gt(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper gt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.gt(value, when), connector);
|
||||
}
|
||||
@ -166,9 +180,15 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return gt(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper gt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return gt(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.gt(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
@ -184,7 +204,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper ge(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper ge(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ge(value, when), connector);
|
||||
}
|
||||
@ -195,9 +215,15 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return ge(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper ge(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return ge(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.ge(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -212,7 +238,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper lt(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper lt(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.lt(value, when), connector);
|
||||
}
|
||||
@ -223,9 +249,15 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return lt(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper lt(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return lt(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.lt(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -241,7 +273,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
}
|
||||
|
||||
|
||||
public <T> Wrapper le(Object value, Predicate<T> when) {
|
||||
public <T> Wrapper le(T value, Predicate<T> when) {
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.le(value, when), connector);
|
||||
}
|
||||
@ -252,9 +284,15 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return le(LambdaUtil.getQueryColumn(value));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @deprecated {@link Predicate} 泛型参数无效
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper le(LambdaGetter<T> value, Predicate<T> when) {
|
||||
return le(LambdaUtil.getQueryColumn(value), when);
|
||||
if (value != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.le(value).when(when), connector);
|
||||
}
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
|
||||
@ -268,6 +306,10 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper isNull(Predicate<T> when) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.isNull(when), connector);
|
||||
return queryWrapper;
|
||||
@ -284,6 +326,10 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated 无法推断泛型
|
||||
*/
|
||||
@Deprecated
|
||||
public <T> Wrapper isNotNull(Predicate<T> when) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.isNotNull(when), connector);
|
||||
return queryWrapper;
|
||||
@ -303,7 +349,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper in(Object[] arrays, Predicate<T> when) {
|
||||
public <T> Wrapper in(T[] arrays, Predicate<T[]> when) {
|
||||
//忽略 QueryWrapper.in("name", null) 的情况
|
||||
if (arrays != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.in(arrays, when), connector);
|
||||
@ -324,6 +370,10 @@ public class QueryConditionBuilder<Wrapper extends 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);
|
||||
@ -345,7 +395,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper in(Collection<?> collection, Predicate<T> when) {
|
||||
public <T extends Collection<?>> Wrapper in(T collection, Predicate<T> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.in(collection, when), connector);
|
||||
}
|
||||
@ -365,7 +415,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper notIn(Object[] arrays, Predicate<T> when) {
|
||||
public <T> Wrapper notIn(T[] arrays, Predicate<T[]> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notIn(arrays, when), connector);
|
||||
}
|
||||
@ -386,7 +436,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper notIn(Collection<?> collection, Predicate<T> when) {
|
||||
public <T extends Collection<?>> Wrapper notIn(T collection, Predicate<T> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notIn(collection, when), connector);
|
||||
}
|
||||
@ -405,6 +455,10 @@ public class QueryConditionBuilder<Wrapper extends 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);
|
||||
@ -427,7 +481,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
}
|
||||
|
||||
|
||||
public <T> Wrapper between(Object start, Object end, Predicate<T> when) {
|
||||
public <S, E> Wrapper between(S start, E end, BiPredicate<S, E> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.between(start, end, when), connector);
|
||||
}
|
||||
@ -448,7 +502,7 @@ public class QueryConditionBuilder<Wrapper extends QueryWrapper> {
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
public <T> Wrapper notBetween(Object start, Object end, Predicate<T> when) {
|
||||
public <S, E> Wrapper notBetween(S start, E end, BiPredicate<S, E> when) {
|
||||
if (queryWrapper != null) {
|
||||
queryWrapper.addWhereQueryCondition(queryColumn.notBetween(start, end, when), connector);
|
||||
}
|
||||
|
||||
@ -291,7 +291,7 @@ public class QueryWrapper extends BaseQueryWrapper<QueryWrapper> {
|
||||
}
|
||||
|
||||
public QueryWrapper or(Consumer<QueryWrapper> consumer, boolean condition) {
|
||||
if (condition) {
|
||||
if (!condition) {
|
||||
return this;
|
||||
}
|
||||
QueryWrapper newWrapper = new QueryWrapper();
|
||||
|
||||
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* 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.coretest;
|
||||
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.core.util.CollectionUtil;
|
||||
import com.mybatisflex.core.util.StringUtil;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static com.mybatisflex.coretest.table.AccountTableDef.ACCOUNT;
|
||||
|
||||
/**
|
||||
* 动态条件测试。
|
||||
*
|
||||
* @author 王帅
|
||||
* @since 2023-08-10
|
||||
*/
|
||||
public class DynamicConditionTest {
|
||||
|
||||
@Test
|
||||
public void test01() {
|
||||
String sql = QueryWrapper.create()
|
||||
.from(ACCOUNT)
|
||||
.where(ACCOUNT.AGE.ge(18))
|
||||
.or(qw -> qw.where(ACCOUNT.ID.eq(1)), false)
|
||||
.toSQL();
|
||||
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test02() {
|
||||
List<Integer> idList = Arrays.asList(1, 2, 3);
|
||||
|
||||
String sql = QueryWrapper.create()
|
||||
.from(ACCOUNT)
|
||||
.where(ACCOUNT.ID.in(idList).when(false))
|
||||
.where(ACCOUNT.ID.in(idList, CollectionUtil::isNotEmpty))
|
||||
.where(ACCOUNT.ID.in(idList).when(idList::isEmpty))
|
||||
.toSQL();
|
||||
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test03() {
|
||||
String sql = QueryWrapper.create()
|
||||
.from(ACCOUNT)
|
||||
.where(ACCOUNT.ID.eq("1", StringUtil::isNumeric))
|
||||
.toSQL();
|
||||
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test04() {
|
||||
String sql = QueryWrapper.create()
|
||||
.from(ACCOUNT)
|
||||
.where(ACCOUNT.ID.between('1', '2', (start, end) -> start < end))
|
||||
.toSQL();
|
||||
|
||||
System.out.println(sql);
|
||||
}
|
||||
|
||||
}
|
||||
@ -29,7 +29,7 @@ import java.util.Objects;
|
||||
* @author 王帅
|
||||
* @since 2023-06-07
|
||||
*/
|
||||
@Table("tb_good")
|
||||
@Table(value = "tb_good", onSet = GoodOnSetListener.class)
|
||||
public class Good extends Model<Good> {
|
||||
|
||||
@Id(keyType = KeyType.Auto)
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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.test.model;
|
||||
|
||||
import com.mybatisflex.annotation.SetListener;
|
||||
|
||||
/**
|
||||
* @author 王帅
|
||||
* @since 2023-08-11
|
||||
*/
|
||||
public class GoodOnSetListener implements SetListener {
|
||||
|
||||
@Override
|
||||
public Object onSet(Object entity, String property, Object value) {
|
||||
System.out.println("Good: " + property + " --- " + value);
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user