mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
别名优化
This commit is contained in:
parent
25b3df16cf
commit
9ce2b519b1
@ -218,18 +218,13 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String columnToString(Integer index, Object column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
return columnToString(index, (KProperty<?>) column, isJoin, prefixEnum);
|
||||
protected final String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, KProperty<?>... columns) {
|
||||
return Arrays.stream(columns).map(i -> columnToString(index, alias, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final String columnsToString(Integer index, PrefixEnum prefixEnum, KProperty<?>... columns) {
|
||||
return Arrays.stream(columns).map(i -> columnToString(index, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
protected String columnToString(Integer index, KProperty<?> column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
protected String columnToString(Integer index, String alias, KProperty<?> column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
Class<?> entityClass = KtUtils.ref(column);
|
||||
return getDefault(index, entityClass, isJoin, prefixEnum) + StringPool.DOT + getCache(column).getColumn();
|
||||
return (alias == null ? getDefault(index, entityClass, isJoin, prefixEnum) : alias) + StringPool.DOT + getCache(column).getColumn();
|
||||
}
|
||||
|
||||
protected SelectCache getCache(KProperty<?> fn) {
|
||||
|
@ -189,64 +189,64 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children eq(boolean condition, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, column, EQ, val);
|
||||
public Children eq(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, alias, column, EQ, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children ne(boolean condition, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, column, NE, val);
|
||||
public Children ne(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, alias, column, NE, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children gt(boolean condition, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, column, GT, val);
|
||||
public Children gt(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, alias, column, GT, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children ge(boolean condition, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, column, GE, val);
|
||||
public Children ge(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, alias, column, GE, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children lt(boolean condition, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, column, LT, val);
|
||||
public Children lt(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, alias, column, LT, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children le(boolean condition, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, column, LE, val);
|
||||
public Children le(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return addCondition(condition, alias, column, LE, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children like(boolean condition, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, LIKE, column, val, SqlLike.DEFAULT);
|
||||
public Children like(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, LIKE, alias, column, val, SqlLike.DEFAULT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children notLike(boolean condition, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, NOT_LIKE, column, val, SqlLike.DEFAULT);
|
||||
public Children notLike(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, NOT_LIKE, alias, column, val, SqlLike.DEFAULT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children likeLeft(boolean condition, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, LIKE, column, val, SqlLike.LEFT);
|
||||
public Children likeLeft(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, LIKE, alias, column, val, SqlLike.LEFT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children likeRight(boolean condition, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, LIKE, column, val, SqlLike.RIGHT);
|
||||
public Children likeRight(boolean condition, String alias, KProperty<?> column, Object val) {
|
||||
return likeValue(condition, LIKE, alias, column, val, SqlLike.RIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children between(boolean condition, KProperty<?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), BETWEEN,
|
||||
public Children between(boolean condition, String alias, KProperty<?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), BETWEEN,
|
||||
() -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children notBetween(boolean condition, KProperty<?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_BETWEEN,
|
||||
public Children notBetween(boolean condition, String alias, KProperty<?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_BETWEEN,
|
||||
() -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
|
||||
}
|
||||
|
||||
@ -317,122 +317,119 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children isNull(boolean condition, KProperty<?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IS_NULL));
|
||||
public Children isNull(boolean condition, String alias, KProperty<?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NULL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children isNotNull(boolean condition, KProperty<?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IS_NOT_NULL));
|
||||
public Children isNotNull(boolean condition, String alias, KProperty<?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NOT_NULL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children in(boolean condition, KProperty<?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IN, inExpression(coll)));
|
||||
public Children in(boolean condition, String alias, KProperty<?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(coll)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children in(boolean condition, KProperty<?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IN, inExpression(values)));
|
||||
public Children in(boolean condition, String alias, KProperty<?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(values)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children notIn(boolean condition, KProperty<?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_IN, inExpression(coll)));
|
||||
public Children notIn(boolean condition, String alias, KProperty<?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(coll)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children notIn(boolean condition, KProperty<?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_IN, inExpression(values)));
|
||||
public Children notIn(boolean condition, String alias, KProperty<?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(values)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children inSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IN,
|
||||
public Children inSql(boolean condition, String alias, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children notInSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_IN,
|
||||
public Children notInSql(boolean condition, String alias, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Children gtSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), GT,
|
||||
public Children gtSql(boolean condition, String alias, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GT,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children geSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), GE,
|
||||
public Children geSql(boolean condition, String alias, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GE,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children ltSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), LT,
|
||||
public Children ltSql(boolean condition, String alias, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LT,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children leSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), LE,
|
||||
public Children leSql(boolean condition, String alias, KProperty<?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LE,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children groupBy(boolean condition, List<KProperty<?>> columns) {
|
||||
public Children groupBy(boolean condition, String alias, List<KProperty<?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
final String finalOne = columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns);
|
||||
final String finalOne = columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns);
|
||||
appendSqlSegments(GROUP_BY, () -> finalOne);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children groupBy(boolean condition, KProperty<?> column, KProperty<?>... columns) {
|
||||
public Children groupBy(boolean condition, String alias, KProperty<?>... columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
String one = columnToString(index, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
one += columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns);
|
||||
}
|
||||
final String finalOne = one;
|
||||
final String finalOne = columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns);
|
||||
appendSqlSegments(GROUP_BY, () -> finalOne);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children orderByAsc(boolean condition, List<KProperty<?>> columns) {
|
||||
public Children orderByAsc(boolean condition, String alias, List<KProperty<?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
columns.forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(index, columnSqlInjectFilter(c)), ASC));
|
||||
columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), ASC));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children orderByDesc(boolean condition, List<KProperty<?>> columns) {
|
||||
public Children orderByDesc(boolean condition, String alias, List<KProperty<?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
columns.forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(index, columnSqlInjectFilter(c)), DESC));
|
||||
columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), DESC));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children orderBy(boolean condition, boolean isAsc, KProperty<?> column, KProperty<?>... columns) {
|
||||
public Children orderBy(boolean condition, boolean isAsc, String alias, KProperty<?>... columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
final SqlKeyword mode = isAsc ? ASC : DESC;
|
||||
appendSqlSegments(ORDER_BY, columnToSqlSegment(index, column), mode);
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
Arrays.stream(columns).forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(index, columnSqlInjectFilter(c)), mode));
|
||||
columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), mode));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -478,8 +475,8 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
* 内部自用
|
||||
* <p>拼接 LIKE 以及 值</p>
|
||||
*/
|
||||
protected Children likeValue(boolean condition, SqlKeyword keyword, KProperty<?> column, Object val, SqlLike sqlLike) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), keyword,
|
||||
protected Children likeValue(boolean condition, SqlKeyword keyword, String alias, KProperty<?> column, Object val, SqlLike sqlLike) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), keyword,
|
||||
() -> formatParam(null, SqlUtils.concatLike(val, sqlLike))));
|
||||
}
|
||||
|
||||
@ -496,18 +493,18 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
* @param sqlKeyword SQL 关键词
|
||||
* @param val 条件值
|
||||
*/
|
||||
protected Children addCondition(boolean condition, KProperty<?> column, SqlKeyword sqlKeyword, Object val) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), sqlKeyword,
|
||||
protected Children addCondition(boolean condition, String alias, KProperty<?> column, SqlKeyword sqlKeyword, Object val) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword,
|
||||
() -> formatParam(null, val)));
|
||||
}
|
||||
|
||||
protected <X, S> Children addCondition(boolean condition, KProperty<?> column, SqlKeyword sqlKeyword, KProperty<?> val) {
|
||||
protected <X, S> Children addCondition(boolean condition, String alias, KProperty<?> column, SqlKeyword sqlKeyword, String rightAlias, KProperty<?> val) {
|
||||
Class<X> c = (Class<X>) KtUtils.ref(column);
|
||||
Class<S> v = (Class<S>) KtUtils.ref(val);
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), sqlKeyword,
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword,
|
||||
isNo ?
|
||||
columnToSqlSegmentS(index, val, v == c && v == joinClass) :
|
||||
columnToSqlSegmentS(index, val, v == c)
|
||||
columnToSqlSegmentS(index, rightAlias, val, v == c && v == joinClass) :
|
||||
columnToSqlSegmentS(index, rightAlias, val, v == c)
|
||||
));
|
||||
}
|
||||
|
||||
@ -690,18 +687,18 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
/**
|
||||
* 获取 columnName
|
||||
*/
|
||||
protected final ISqlSegment columnToSqlSegment(Integer index, KProperty<?> column) {
|
||||
return () -> columnToString(index, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
protected final ISqlSegment columnToSqlSegment(Integer index, String alias, KProperty<?> column) {
|
||||
return () -> columnToString(index, alias, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
}
|
||||
|
||||
protected final ISqlSegment columnToSqlSegmentS(Integer index, KProperty<?> column, boolean isJoin) {
|
||||
protected final ISqlSegment columnToSqlSegmentS(Integer index, String alias, KProperty<?> column, boolean isJoin) {
|
||||
PrefixEnum prefixEnum;
|
||||
if (isMain) {
|
||||
prefixEnum = isNo ? PrefixEnum.ON_SECOND /* 理论上不可能有这种情况 */ : PrefixEnum.CD_SECOND;
|
||||
} else {
|
||||
prefixEnum = isNo ? PrefixEnum.ON_SECOND : PrefixEnum.CD_ON_SECOND;
|
||||
}
|
||||
return () -> columnToString(index, column, isJoin, prefixEnum);
|
||||
return () -> columnToString(index, alias, column, isJoin, prefixEnum);
|
||||
}
|
||||
|
||||
protected final ISqlSegment columnToSqlSegment(String column) {
|
||||
@ -711,9 +708,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
/**
|
||||
* 获取 columnName
|
||||
*/
|
||||
protected String columnToString(Integer index, Object column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
return (String) column;
|
||||
}
|
||||
abstract String columnToString(Integer index, String alias, KProperty<?> column, boolean isJoin, PrefixEnum prefixEnum);
|
||||
|
||||
protected String columnToString(String column) {
|
||||
if (checkSqlInjection && MPJSqlInjectionUtils.check(column)) {
|
||||
@ -736,12 +731,12 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
*
|
||||
* @param columns 多字段
|
||||
*/
|
||||
protected String columnsToString(Integer index, PrefixEnum prefixEnum, KProperty<?>... columns) {
|
||||
return Arrays.stream(columns).map(i -> this.columnToString(index, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
protected String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, KProperty<?>... columns) {
|
||||
return Arrays.stream(columns).map(i -> this.columnToString(index, alias, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
protected String columnsToString(Integer index, PrefixEnum prefixEnum, List<KProperty<?>> columns) {
|
||||
return columns.stream().map(i -> this.columnToString(index, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
protected String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, List<KProperty<?>> columns) {
|
||||
return columns.stream().map(i -> this.columnToString(index, alias, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||
@ -762,33 +757,33 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
/* ************************* on语句重载 *************************** */
|
||||
|
||||
@Override
|
||||
public Children eq(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return addCondition(condition, column, EQ, val);
|
||||
public Children eq(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return addCondition(condition, alias, column, EQ, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children ne(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return addCondition(condition, column, NE, val);
|
||||
public Children ne(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return addCondition(condition, alias, column, NE, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children gt(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return addCondition(condition, column, GT, val);
|
||||
public Children gt(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return addCondition(condition, alias, column, GT, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children ge(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return addCondition(condition, column, GE, val);
|
||||
public Children ge(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return addCondition(condition, alias, column, GE, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children lt(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return addCondition(condition, column, LT, val);
|
||||
public Children lt(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return addCondition(condition, alias, column, LT, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Children le(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return addCondition(condition, column, LE, val);
|
||||
public Children le(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return addCondition(condition, alias, column, LE, rightAlias, val);
|
||||
}
|
||||
|
||||
/* ****************************************** **/
|
||||
|
@ -13,16 +13,12 @@ import java.util.Map;
|
||||
@SuppressWarnings("unused")
|
||||
public interface Compare<Children> extends Serializable {
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children allEq(Map<KProperty<?>,?> params) {
|
||||
|
||||
default Children allEq(Map<KProperty<?>, ?> params) {
|
||||
return allEq(params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default Children allEq(Map<KProperty<?>, ?> params, boolean null2IsNull) {
|
||||
return allEq(true, params, null2IsNull);
|
||||
}
|
||||
@ -38,12 +34,16 @@ public interface Compare<Children> extends Serializable {
|
||||
Children allEq(boolean condition, Map<KProperty<?>, ?> params, boolean null2IsNull);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
default Children eq(KProperty<?> column, Object val) {
|
||||
return eq(true, column, val);
|
||||
return eq(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children eq(String alias, KProperty<?> column, Object val) {
|
||||
return eq(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children eq(boolean condition, KProperty<?> column, Object val) {
|
||||
return eq(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -54,13 +54,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children eq(boolean condition, KProperty<?> column, Object val);
|
||||
Children eq(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children ne(KProperty<?> column, Object val) {
|
||||
return ne(true, column, val);
|
||||
return ne(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children ne(String alias, KProperty<?> column, Object val) {
|
||||
return ne(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children ne(boolean condition, KProperty<?> column, Object val) {
|
||||
return ne(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -71,13 +77,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children ne(boolean condition, KProperty<?> column, Object val);
|
||||
Children ne(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children gt(KProperty<?> column, Object val) {
|
||||
return gt(true, column, val);
|
||||
return gt(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children gt(String alias, KProperty<?> column, Object val) {
|
||||
return gt(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children gt(boolean condition, KProperty<?> column, Object val) {
|
||||
return gt(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -88,13 +100,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children gt(boolean condition, KProperty<?> column, Object val);
|
||||
Children gt(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children ge(KProperty<?> column, Object val) {
|
||||
return ge(true, column, val);
|
||||
return ge(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children ge(String alias, KProperty<?> column, Object val) {
|
||||
return ge(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children ge(boolean condition, KProperty<?> column, Object val) {
|
||||
return ge(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -105,13 +123,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children ge(boolean condition, KProperty<?> column, Object val);
|
||||
Children ge(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children lt(KProperty<?> column, Object val) {
|
||||
return lt(true, column, val);
|
||||
return lt(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children lt(String alias, KProperty<?> column, Object val) {
|
||||
return lt(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children lt(boolean condition, KProperty<?> column, Object val) {
|
||||
return lt(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -122,13 +146,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children lt(boolean condition, KProperty<?> column, Object val);
|
||||
Children lt(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children le(KProperty<?> column, Object val) {
|
||||
return le(true, column, val);
|
||||
return le(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children le(String alias, KProperty<?> column, Object val) {
|
||||
return le(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children le(boolean condition, KProperty<?> column, Object val) {
|
||||
return le(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -139,13 +169,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children le(boolean condition, KProperty<?> column, Object val);
|
||||
Children le(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children between(KProperty<?> column, Object val1, Object val2) {
|
||||
return between(true, column, val1, val2);
|
||||
return between(true, null, column, val1, val2);
|
||||
}
|
||||
|
||||
default Children between(String alias, KProperty<?> column, Object val1, Object val2) {
|
||||
return between(true, alias, column, val1, val2);
|
||||
}
|
||||
|
||||
default Children between(boolean condition, KProperty<?> column, Object val1, Object val2) {
|
||||
return between(condition, null, column, val1, val2);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -157,13 +193,18 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val2 值2
|
||||
* @return children
|
||||
*/
|
||||
Children between(boolean condition, KProperty<?> column, Object val1, Object val2);
|
||||
Children between(boolean condition, String alias, KProperty<?> column, Object val1, Object val2);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children notBetween(KProperty<?> column, Object val1, Object val2) {
|
||||
return notBetween(true, column, val1, val2);
|
||||
return notBetween(true, null, column, val1, val2);
|
||||
}
|
||||
|
||||
default Children notBetween(String alias, KProperty<?> column, Object val1, Object val2) {
|
||||
return notBetween(true, alias, column, val1, val2);
|
||||
}
|
||||
|
||||
default Children notBetween(boolean condition, KProperty<?> column, Object val1, Object val2) {
|
||||
return notBetween(condition, null, column, val1, val2);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -175,13 +216,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val2 值2
|
||||
* @return children
|
||||
*/
|
||||
Children notBetween(boolean condition, KProperty<?> column, Object val1, Object val2);
|
||||
Children notBetween(boolean condition, String alias, KProperty<?> column, Object val1, Object val2);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children like(KProperty<?> column, Object val) {
|
||||
return like(true, column, val);
|
||||
return like(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children like(String alisa, KProperty<?> column, Object val) {
|
||||
return like(true, alisa, column, val);
|
||||
}
|
||||
|
||||
default Children like(boolean condition, KProperty<?> column, Object val) {
|
||||
return like(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -192,13 +239,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children like(boolean condition, KProperty<?> column, Object val);
|
||||
Children like(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children notLike(KProperty<?> column, Object val) {
|
||||
return notLike(true, column, val);
|
||||
return notLike(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children notLike(String alias, KProperty<?> column, Object val) {
|
||||
return notLike(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children notLike(boolean condition, KProperty<?> column, Object val) {
|
||||
return notLike(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -209,13 +262,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children notLike(boolean condition, KProperty<?> column, Object val);
|
||||
Children notLike(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children likeLeft(KProperty<?> column, Object val) {
|
||||
return likeLeft(true, column, val);
|
||||
return likeLeft(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children likeLeft(String alias, KProperty<?> column, Object val) {
|
||||
return likeLeft(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children likeLeft(boolean condition, KProperty<?> column, Object val) {
|
||||
return likeLeft(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -226,15 +285,22 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children likeLeft(boolean condition, KProperty<?> column, Object val);
|
||||
Children likeLeft(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children likeRight(KProperty<?> column, Object val) {
|
||||
return likeRight(true, column, val);
|
||||
return likeRight(true, null, column, val);
|
||||
}
|
||||
|
||||
default Children likeRight(String alias, KProperty<?> column, Object val) {
|
||||
return likeRight(true, alias, column, val);
|
||||
}
|
||||
|
||||
default Children likeRight(boolean condition, KProperty<?> column, Object val) {
|
||||
return likeRight(condition, null, column, val);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* LIKE '值%'
|
||||
*
|
||||
@ -243,5 +309,5 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children likeRight(boolean condition, KProperty<?> column, Object val);
|
||||
Children likeRight(boolean condition, String alias, KProperty<?> column, Object val);
|
||||
}
|
||||
|
@ -12,15 +12,20 @@ import java.util.function.Consumer;
|
||||
* <p>
|
||||
* copy {@link com.baomidou.mybatisplus.core.conditions.interfaces.Func}
|
||||
*/
|
||||
@SuppressWarnings({"unused", "JavadocDeclaration"})
|
||||
@SuppressWarnings("unused")
|
||||
public interface Func<Children> extends Serializable {
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
|
||||
default Children isNull(KProperty<?> column) {
|
||||
return isNull(true, column);
|
||||
return isNull(true, null, column);
|
||||
}
|
||||
|
||||
default Children isNull(String alias, KProperty<?> column) {
|
||||
return isNull(true, alias, column);
|
||||
}
|
||||
|
||||
default Children isNull(boolean condition, KProperty<?> column) {
|
||||
return isNull(condition, null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -31,13 +36,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param column 字段
|
||||
* @return children
|
||||
*/
|
||||
Children isNull(boolean condition, KProperty<?> column);
|
||||
Children isNull(boolean condition, String alias, KProperty<?> column);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children isNotNull(KProperty<?> column) {
|
||||
return isNotNull(true, column);
|
||||
return isNotNull(true, null, column);
|
||||
}
|
||||
|
||||
default Children isNotNull(String alias, KProperty<?> column) {
|
||||
return isNotNull(true, alias, column);
|
||||
}
|
||||
|
||||
default Children isNotNull(boolean condition, KProperty<?> column) {
|
||||
return isNotNull(condition, null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,13 +59,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param column 字段
|
||||
* @return children
|
||||
*/
|
||||
Children isNotNull(boolean condition, KProperty<?> column);
|
||||
Children isNotNull(boolean condition, String alias, KProperty<?> column);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children in(KProperty<?> column, Collection<?> coll) {
|
||||
return in(true, column, coll);
|
||||
return in(true, null, column, coll);
|
||||
}
|
||||
|
||||
default Children in(String alias, KProperty<?> column, Collection<?> coll) {
|
||||
return in(true, alias, column, coll);
|
||||
}
|
||||
|
||||
default Children in(boolean condition, KProperty<?> column, Collection<?> coll) {
|
||||
return in(condition, null, column, coll);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,13 +86,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param coll 数据集合
|
||||
* @return children
|
||||
*/
|
||||
Children in(boolean condition, KProperty<?> column, Collection<?> coll);
|
||||
Children in(boolean condition, String alias, KProperty<?> column, Collection<?> coll);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children in(KProperty<?> column, Object... values) {
|
||||
return in(true, column, values);
|
||||
return in(true, null, column, values);
|
||||
}
|
||||
|
||||
default Children in(String alias, KProperty<?> column, Object... values) {
|
||||
return in(true, alias, column, values);
|
||||
}
|
||||
|
||||
default Children in(boolean condition, KProperty<?> column, Object... values) {
|
||||
return in(condition, null, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -90,13 +113,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param values 数据数组
|
||||
* @return children
|
||||
*/
|
||||
Children in(boolean condition, KProperty<?> column, Object... values);
|
||||
Children in(boolean condition, String alias, KProperty<?> column, Object... values);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children notIn(KProperty<?> column, Collection<?> coll) {
|
||||
return notIn(true, column, coll);
|
||||
return notIn(true, null, column, coll);
|
||||
}
|
||||
|
||||
default Children notIn(String alias, KProperty<?> column, Collection<?> coll) {
|
||||
return notIn(true, alias, column, coll);
|
||||
}
|
||||
|
||||
default Children notIn(boolean condition, KProperty<?> column, Collection<?> coll) {
|
||||
return notIn(condition, null, column, coll);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -108,13 +137,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param coll 数据集合
|
||||
* @return children
|
||||
*/
|
||||
Children notIn(boolean condition, KProperty<?> column, Collection<?> coll);
|
||||
Children notIn(boolean condition, String alias, KProperty<?> column, Collection<?> coll);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children notIn(KProperty<?> column, Object... value) {
|
||||
return notIn(true, column, value);
|
||||
return notIn(true, null, column, value);
|
||||
}
|
||||
|
||||
default Children notIn(String alias, KProperty<?> column, Object... value) {
|
||||
return notIn(true, alias, column, value);
|
||||
}
|
||||
|
||||
default Children notIn(boolean condition, KProperty<?> column, Object... values) {
|
||||
return notIn(condition, null, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -126,13 +161,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param values 数据数组
|
||||
* @return children
|
||||
*/
|
||||
Children notIn(boolean condition, KProperty<?> column, Object... values);
|
||||
Children notIn(boolean condition, String alias, KProperty<?> column, Object... values);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children inSql(KProperty<?> column, String inValue) {
|
||||
return inSql(true, column, inValue);
|
||||
return inSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default Children inSql(String alias, KProperty<?> column, String inValue) {
|
||||
return inSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default Children inSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return inSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -146,13 +187,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param inValue sql语句
|
||||
* @return children
|
||||
*/
|
||||
Children inSql(boolean condition, KProperty<?> column, String inValue);
|
||||
Children inSql(boolean condition, String alias, KProperty<?> column, String inValue);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children notInSql(KProperty<?> column, String inValue) {
|
||||
return notInSql(true, column, inValue);
|
||||
return notInSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default Children notInSql(String alias, KProperty<?> column, String inValue) {
|
||||
return notInSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default Children notInSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return notInSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -166,26 +213,42 @@ public interface Func<Children> extends Serializable {
|
||||
* @param inValue sql语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3
|
||||
* @return children
|
||||
*/
|
||||
Children notInSql(boolean condition, KProperty<?> column, String inValue);
|
||||
Children notInSql(boolean condition, String alias, KProperty<?> column, String inValue);
|
||||
|
||||
default Children gtSql(KProperty<?> column, String inValue) {
|
||||
return gtSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default Children gtSql(String alias, KProperty<?> column, String inValue) {
|
||||
return gtSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default Children gtSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return gtSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 字段 > ( sql语句 )
|
||||
* <p>例1: gtSql("id", "1, 2, 3, 4, 5, 6")</p>
|
||||
* <p>例1: gtSql("id", "select id from table where name = 'JunJun'")</p>
|
||||
*
|
||||
* @param condition
|
||||
* @param column
|
||||
* @param inValue
|
||||
* @return
|
||||
* @param condition 执行条件
|
||||
* @param column 字段
|
||||
* @param inValue sql语句
|
||||
* @return children
|
||||
*/
|
||||
Children gtSql(boolean condition, KProperty<?> column, String inValue);
|
||||
Children gtSql(boolean condition, String alias, KProperty<?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children gtSql(KProperty<?> column, String inValue) {
|
||||
return gtSql(true, column, inValue);
|
||||
default Children geSql(KProperty<?> column, String inValue) {
|
||||
return geSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default Children geSql(String alias, KProperty<?> column, String inValue) {
|
||||
return geSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default Children geSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return geSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -193,18 +256,24 @@ public interface Func<Children> extends Serializable {
|
||||
* <p>例1: geSql("id", "1, 2, 3, 4, 5, 6")</p>
|
||||
* <p>例1: geSql("id", "select id from table where name = 'JunJun'")</p>
|
||||
*
|
||||
* @param condition
|
||||
* @param column
|
||||
* @param inValue
|
||||
* @return
|
||||
* @param condition 执行条件
|
||||
* @param column 字段
|
||||
* @param inValue sql语句
|
||||
* @return children
|
||||
*/
|
||||
Children geSql(boolean condition, KProperty<?> column, String inValue);
|
||||
Children geSql(boolean condition, String alias, KProperty<?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children geSql(KProperty<?> column, String inValue) {
|
||||
return geSql(true, column, inValue);
|
||||
|
||||
default Children ltSql(KProperty<?> column, String inValue) {
|
||||
return ltSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default Children ltSql(String alias, KProperty<?> column, String inValue) {
|
||||
return ltSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default Children ltSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return ltSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -212,18 +281,23 @@ public interface Func<Children> extends Serializable {
|
||||
* <p>例1: ltSql("id", "1, 2, 3, 4, 5, 6")</p>
|
||||
* <p>例1: ltSql("id", "select id from table where name = 'JunJun'")</p>
|
||||
*
|
||||
* @param condition
|
||||
* @param column
|
||||
* @param inValue
|
||||
* @return
|
||||
* @param condition 执行条件
|
||||
* @param column 字段
|
||||
* @param inValue sql语句
|
||||
* @return children
|
||||
*/
|
||||
Children ltSql(boolean condition, KProperty<?> column, String inValue);
|
||||
Children ltSql(boolean condition, String alias, KProperty<?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children ltSql(KProperty<?> column, String inValue) {
|
||||
return ltSql(true, column, inValue);
|
||||
default Children leSql(KProperty<?> column, String inValue) {
|
||||
return leSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default Children leSql(String alias, KProperty<?> column, String inValue) {
|
||||
return leSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default Children leSql(boolean condition, KProperty<?> column, String inValue) {
|
||||
return leSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -231,44 +305,40 @@ public interface Func<Children> extends Serializable {
|
||||
* <p>例1: leSql("id", "1, 2, 3, 4, 5, 6")</p>
|
||||
* <p>例1: leSql("id", "select id from table where name = 'JunJun'")</p>
|
||||
*
|
||||
* @param condition
|
||||
* @param column
|
||||
* @param inValue
|
||||
* @return
|
||||
* @param condition 执行条件
|
||||
* @param column 字段
|
||||
* @param inValue sql语句
|
||||
* @return children
|
||||
*/
|
||||
Children leSql(boolean condition, KProperty<?> column, String inValue);
|
||||
Children leSql(boolean condition, String alias, KProperty<?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children leSql(KProperty<?> column, String inValue) {
|
||||
return leSql(true, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children groupBy(KProperty<?> column) {
|
||||
return groupBy(true, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children groupBy(List<KProperty<?>> column) {
|
||||
return groupBy(true, column);
|
||||
return groupBy(true, null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
Children groupBy(boolean condition, List<KProperty<?>> columns);
|
||||
default Children groupBy(String alias, List<KProperty<?>> column) {
|
||||
return groupBy(true, alias, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children groupBy(KProperty<?> column, KProperty<?>... columns) {
|
||||
return groupBy(true, column, columns);
|
||||
default Children groupBy(boolean condition, List<KProperty<?>> columns) {
|
||||
return groupBy(condition, null, columns);
|
||||
}
|
||||
|
||||
|
||||
Children groupBy(boolean condition, String alias, List<KProperty<?>> columns);
|
||||
|
||||
|
||||
default Children groupBy(KProperty<?>... columns) {
|
||||
return groupBy(true, null, columns);
|
||||
}
|
||||
|
||||
default Children groupBy(String alias, KProperty<?>... columns) {
|
||||
return groupBy(true, alias, columns);
|
||||
}
|
||||
|
||||
default Children groupBy(boolean condition, KProperty<?>... columns) {
|
||||
return groupBy(condition, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -276,36 +346,42 @@ public interface Func<Children> extends Serializable {
|
||||
* <p>例: groupBy("id", "name")</p>
|
||||
*
|
||||
* @param condition 执行条件
|
||||
* @param column 单个字段
|
||||
* @param columns 字段数组
|
||||
* @return children
|
||||
*/
|
||||
Children groupBy(boolean condition, KProperty<?> column, KProperty<?>... columns);
|
||||
Children groupBy(boolean condition, String alias, KProperty<?>... columns);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children orderByAsc(KProperty<?> column) {
|
||||
return orderByAsc(true, column);
|
||||
return orderByAsc(true, (String) null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children orderByAsc(String alias, KProperty<?> column) {
|
||||
return orderByAsc(true, alias, column);
|
||||
}
|
||||
|
||||
|
||||
default Children orderByAsc(List<KProperty<?>> columns) {
|
||||
return orderByAsc(true, columns);
|
||||
return orderByAsc(true, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
Children orderByAsc(boolean condition, List<KProperty<?>> columns);
|
||||
default Children orderByAsc(String alias, List<KProperty<?>> columns) {
|
||||
return orderByAsc(true, alias, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children orderByAsc(KProperty<?> column, KProperty<?>... columns) {
|
||||
return orderByAsc(true, column, columns);
|
||||
default Children orderByAsc(boolean condition, List<KProperty<?>> columns) {
|
||||
return orderByAsc(condition, null, columns);
|
||||
}
|
||||
|
||||
Children orderByAsc(boolean condition, String alias, List<KProperty<?>> columns);
|
||||
|
||||
|
||||
default Children orderByAsc(KProperty<?>... columns) {
|
||||
return orderByAsc(true, null, columns);
|
||||
}
|
||||
|
||||
default Children orderByAsc(String alias, KProperty<?>... columns) {
|
||||
return orderByAsc(true, alias, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -313,38 +389,38 @@ public interface Func<Children> extends Serializable {
|
||||
* <p>例: orderByAsc("id", "name")</p>
|
||||
*
|
||||
* @param condition 执行条件
|
||||
* @param column 单个字段
|
||||
* @param columns 字段数组
|
||||
* @return children
|
||||
*/
|
||||
default Children orderByAsc(boolean condition, KProperty<?> column, KProperty<?>... columns) {
|
||||
return orderBy(condition, true, column, columns);
|
||||
default Children orderByAsc(boolean condition, KProperty<?>... columns) {
|
||||
return orderBy(condition, true, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children orderByDesc(KProperty<?> column) {
|
||||
return orderByDesc(true, column);
|
||||
default Children orderByAsc(boolean condition, String alias, KProperty<?>... columns) {
|
||||
return orderBy(condition, true, alias, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children orderByDesc(List<KProperty<?>> columns) {
|
||||
return orderByDesc(true, columns);
|
||||
return orderByDesc(true, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
Children orderByDesc(boolean condition, List<KProperty<?>> columns);
|
||||
default Children orderByDesc(String alias, List<KProperty<?>> columns) {
|
||||
return orderByDesc(true, alias, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children orderByDesc(KProperty<?> column, KProperty<?>... columns) {
|
||||
return orderByDesc(true, column, columns);
|
||||
default Children orderByDesc(boolean condition, List<KProperty<?>> columns) {
|
||||
return orderByDesc(condition, null, columns);
|
||||
}
|
||||
|
||||
Children orderByDesc(boolean condition, String alias, List<KProperty<?>> columns);
|
||||
|
||||
|
||||
default Children orderByDesc(KProperty<?>... columns) {
|
||||
return orderByDesc(true, null, columns);
|
||||
}
|
||||
|
||||
default Children orderByDesc(String alias, KProperty<?>... columns) {
|
||||
return orderByDesc(true, alias, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -352,12 +428,19 @@ public interface Func<Children> extends Serializable {
|
||||
* <p>例: orderByDesc("id", "name")</p>
|
||||
*
|
||||
* @param condition 执行条件
|
||||
* @param column 单个字段
|
||||
* @param columns 字段数组
|
||||
* @return children
|
||||
*/
|
||||
default Children orderByDesc(boolean condition, KProperty<?> column, KProperty<?>... columns) {
|
||||
return orderBy(condition, false, column, columns);
|
||||
default Children orderByDesc(boolean condition, KProperty<?>... columns) {
|
||||
return orderBy(condition, false, null, columns);
|
||||
}
|
||||
|
||||
default Children orderByDesc(boolean condition, String alias, KProperty<?>... columns) {
|
||||
return orderBy(condition, false, alias, columns);
|
||||
}
|
||||
|
||||
default Children orderBy(boolean condition, boolean isAsc, KProperty<?>... columns) {
|
||||
return orderBy(condition, isAsc, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -366,15 +449,12 @@ public interface Func<Children> extends Serializable {
|
||||
*
|
||||
* @param condition 执行条件
|
||||
* @param isAsc 是否是 ASC 排序
|
||||
* @param column 单个字段
|
||||
* @param columns 字段数组
|
||||
* @return children
|
||||
*/
|
||||
Children orderBy(boolean condition, boolean isAsc, KProperty<?> column, KProperty<?>... columns);
|
||||
Children orderBy(boolean condition, boolean isAsc, String alias, KProperty<?>... columns);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children having(String sqlHaving, Object... params) {
|
||||
return having(true, sqlHaving, params);
|
||||
}
|
||||
@ -391,9 +471,7 @@ public interface Func<Children> extends Serializable {
|
||||
*/
|
||||
Children having(boolean condition, String sqlHaving, Object... params);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default Children func(Consumer<Children> consumer) {
|
||||
return func(true, consumer);
|
||||
}
|
||||
|
@ -14,11 +14,33 @@ import java.io.Serializable;
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public interface OnCompare<Children> extends Serializable {
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default Children eq(KProperty<?> column, KProperty<?> val) {
|
||||
return eq(true, column, val);
|
||||
return eq(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children eq(String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return eq(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children eq(KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return eq(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children eq(String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return eq(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children eq(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return eq(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children eq(boolean condition, String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return eq(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children eq(boolean condition, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return eq(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -29,13 +51,35 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children eq(boolean condition, KProperty<?> column, KProperty<?> val);
|
||||
Children eq(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children ne(KProperty<?> column, KProperty<?> val) {
|
||||
return ne(true, column, val);
|
||||
return ne(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children ne(String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return ne(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children ne(KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return ne(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children ne(String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return ne(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children ne(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return ne(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children ne(boolean condition, String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return ne(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children ne(boolean condition, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return ne(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -46,13 +90,35 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children ne(boolean condition, KProperty<?> column, KProperty<?> val);
|
||||
Children ne(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children gt(KProperty<?> column, KProperty<?> val) {
|
||||
return gt(true, column, val);
|
||||
return gt(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children gt(String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return gt(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children gt(KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return gt(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children gt(String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return gt(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children gt(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return gt(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children gt(boolean condition, String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return gt(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children gt(boolean condition, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return gt(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -63,13 +129,35 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children gt(boolean condition, KProperty<?> column, KProperty<?> val);
|
||||
Children gt(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children ge(KProperty<?> column, KProperty<?> val) {
|
||||
return ge(true, column, val);
|
||||
return ge(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children ge(String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return ge(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children ge(KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return ge(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children ge(String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return ge(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children ge(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return ge(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children ge(boolean condition, String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return ge(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children ge(boolean condition, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return ge(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -80,13 +168,35 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children ge(boolean condition, KProperty<?> column, KProperty<?> val);
|
||||
Children ge(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children lt(KProperty<?> column, KProperty<?> val) {
|
||||
return lt(true, column, val);
|
||||
return lt(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children lt(String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return lt(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children lt(KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return lt(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children lt(String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return lt(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children lt(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return lt(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children lt(boolean condition, String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return lt(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children lt(boolean condition, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return lt(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -97,13 +207,35 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children lt(boolean condition, KProperty<?> column, KProperty<?> val);
|
||||
Children lt(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children le(KProperty<?> column, KProperty<?> val) {
|
||||
return le(true, column, val);
|
||||
return le(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children le(String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return le(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children le(KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return le(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children le(String alias, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return le(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default Children le(boolean condition, KProperty<?> column, KProperty<?> val) {
|
||||
return le(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default Children le(boolean condition, String alias, KProperty<?> column, KProperty<?> val) {
|
||||
return le(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default Children le(boolean condition, KProperty<?> column, String rightAlias, KProperty<?> val) {
|
||||
return le(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,5 +246,5 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
Children le(boolean condition, KProperty<?> column, KProperty<?> val);
|
||||
Children le(boolean condition, String alias, KProperty<?> column, String rightAlias, KProperty<?> val);
|
||||
}
|
||||
|
@ -26,6 +26,17 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.LEFT_JOIN, clazz, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join
|
||||
*
|
||||
* @param clazz 关联的实体类
|
||||
* @param left 条件
|
||||
* @param right 条件
|
||||
*/
|
||||
default Children leftJoin(Class<?> clazz, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.LEFT_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join 多条件
|
||||
* <p>
|
||||
@ -72,6 +83,17 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.LEFT_JOIN, clazz, alias, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join
|
||||
*
|
||||
* @param clazz 关联的实体类
|
||||
* @param left 条件
|
||||
* @param right 条件
|
||||
*/
|
||||
default Children leftJoin(Class<?> clazz, String alias, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.LEFT_JOIN, clazz, alias, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join 多条件
|
||||
* <p>
|
||||
@ -114,6 +136,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.RIGHT_JOIN, clazz, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default Children rightJoin(Class<?> clazz, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.RIGHT_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -142,6 +171,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.RIGHT_JOIN, clazz, alias, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default Children rightJoin(Class<?> clazz, String alias, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.RIGHT_JOIN, clazz, alias, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -171,6 +207,14 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.INNER_JOIN, clazz, on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default Children innerJoin(Class<?> clazz, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.INNER_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -200,6 +244,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.INNER_JOIN, clazz, alias, on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default Children innerJoin(Class<?> clazz, String alias, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.INNER_JOIN, clazz, alias, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -228,6 +279,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.FULL_JOIN, clazz, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default Children fullJoin(Class<?> clazz, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.FULL_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -256,6 +314,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.FULL_JOIN, clazz, alias, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default Children fullJoin(Class<?> clazz, String alias, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(Constant.FULL_JOIN, clazz, alias, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -292,6 +357,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(keyWord, clazz, on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children join(String keyWord, Class<?> clazz, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(keyWord, clazz, on -> on.eq(left, rightAlias, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* <p>
|
||||
@ -333,6 +405,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(keyWord, clazz, alias, on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <T, X> Children join(String keyWord, Class<?> clazz, String alias, KProperty<?> left, String rightAlias, KProperty<?> right) {
|
||||
return join(keyWord, clazz, alias, on -> on.eq(left, rightAlias, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* <p>
|
||||
|
@ -1,150 +0,0 @@
|
||||
//package com.github.yulichang.test.config;
|
||||
//
|
||||
//import com.baomidou.mybatisplus.core.injector.AbstractMethod;
|
||||
//import com.baomidou.mybatisplus.core.injector.ISqlInjector;
|
||||
//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
//import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
//import com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn;
|
||||
//import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
|
||||
//import com.github.yulichang.injector.MPJSqlInjector;
|
||||
//import com.github.yulichang.test.util.ThreadLocalUtils;
|
||||
//import org.apache.ibatis.cache.CacheKey;
|
||||
//import org.apache.ibatis.executor.Executor;
|
||||
//import org.apache.ibatis.executor.statement.StatementHandler;
|
||||
//import org.apache.ibatis.mapping.BoundSql;
|
||||
//import org.apache.ibatis.mapping.MappedStatement;
|
||||
//import org.apache.ibatis.plugin.*;
|
||||
//import org.apache.ibatis.session.ResultHandler;
|
||||
//import org.apache.ibatis.session.RowBounds;
|
||||
//import org.springframework.context.annotation.Bean;
|
||||
//import org.springframework.context.annotation.Configuration;
|
||||
//import org.springframework.context.annotation.Primary;
|
||||
//import org.springframework.core.Ordered;
|
||||
//import org.springframework.core.annotation.Order;
|
||||
//import org.springframework.stereotype.Component;
|
||||
//
|
||||
//import java.sql.Connection;
|
||||
//import java.util.List;
|
||||
//import java.util.Objects;
|
||||
//import java.util.StringTokenizer;
|
||||
//
|
||||
///**
|
||||
// * mp 3.3.x
|
||||
// */
|
||||
//@Configuration
|
||||
//public class MPConfig {
|
||||
//
|
||||
// @Bean
|
||||
// public PaginationInterceptor mybatisPlusInterceptor() {
|
||||
// return new PaginationInterceptor();
|
||||
// }
|
||||
//
|
||||
// @Bean
|
||||
// @Primary
|
||||
// @Order(Ordered.HIGHEST_PRECEDENCE)
|
||||
// public ISqlInjector sqlInjector() {
|
||||
// return new MPJSqlInjector() {
|
||||
// @Override
|
||||
// public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
|
||||
// List<AbstractMethod> list = super.getMethodList(mapperClass);
|
||||
// //添加你的方法
|
||||
// list.add(new InsertBatchSomeColumn());
|
||||
// return list;
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
//
|
||||
// @Component
|
||||
// @Intercepts({
|
||||
// @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class}),
|
||||
// @Signature(type = StatementHandler.class, method = "getBoundSql", args = {}),
|
||||
// @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
|
||||
// @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),
|
||||
// @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class}),
|
||||
// })
|
||||
// public static class SqlInterceptor implements Interceptor {
|
||||
//
|
||||
// @Override
|
||||
// public Object intercept(Invocation invocation) throws Throwable {
|
||||
// Object target = invocation.getTarget();
|
||||
// BoundSql boundSql = null;
|
||||
// if (target instanceof StatementHandler) {
|
||||
// boundSql = ((StatementHandler) target).getBoundSql();
|
||||
// String sql = boundSql.getSql();
|
||||
// List<String> strings = ThreadLocalUtils.get();
|
||||
// if (CollectionUtils.isNotEmpty(strings)) {
|
||||
// boolean flag = false;
|
||||
// String ss = null;
|
||||
// for (String s : strings) {
|
||||
// if (sql != null && s != null) {
|
||||
// String s1 = formatSql(sql);
|
||||
// String s2 = formatSql(s);
|
||||
// if (StringUtils.isNotBlank(s)) {
|
||||
// if (!Objects.equals(s1.toLowerCase(), s2.toLowerCase())) {
|
||||
// ss = s;
|
||||
// } else {
|
||||
// flag = true;
|
||||
// break;
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// if (flag) {
|
||||
// System.out.println("===============================================");
|
||||
// System.out.println();
|
||||
// System.out.println("pass");
|
||||
// System.out.println();
|
||||
// System.out.println("===============================================");
|
||||
// } else {
|
||||
// System.err.println("执行sql: " + removeExtraWhitespaces(sql));
|
||||
// System.err.println("预期sql: " + removeExtraWhitespaces(ss));
|
||||
// throw new RuntimeException("sql error");
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// System.out.println(boundSql);
|
||||
// return invocation.proceed();
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Object plugin(Object target) {
|
||||
// if (target instanceof Executor || target instanceof StatementHandler) {
|
||||
// return Plugin.wrap(target, this);
|
||||
// }
|
||||
// return target;
|
||||
// }
|
||||
//
|
||||
// private String formatSql(String sql) {
|
||||
// if (StringUtils.isBlank(sql)) {
|
||||
// return sql;
|
||||
// }
|
||||
// sql = sql.replaceAll("\n", "");
|
||||
// sql = sql.replaceAll("\r", "");
|
||||
// sql = sql.replaceAll("\t", "");
|
||||
// return dg(sql);
|
||||
// }
|
||||
//
|
||||
// private String dg(String str) {
|
||||
// if (str.contains(" ")) {
|
||||
// str = str.replaceAll(" ", "");
|
||||
// return dg(str);
|
||||
// }
|
||||
// return str;
|
||||
// }
|
||||
//
|
||||
// private String removeExtraWhitespaces(String original) {
|
||||
// StringTokenizer tokenizer = new StringTokenizer(original);
|
||||
// StringBuilder builder = new StringBuilder();
|
||||
// boolean hasMoreTokens = tokenizer.hasMoreTokens();
|
||||
// while (hasMoreTokens) {
|
||||
// builder.append(tokenizer.nextToken());
|
||||
// hasMoreTokens = tokenizer.hasMoreTokens();
|
||||
// if (hasMoreTokens) {
|
||||
// builder.append(' ');
|
||||
// }
|
||||
// }
|
||||
// return builder.toString();
|
||||
// }
|
||||
// }
|
||||
//}
|
@ -97,6 +97,10 @@ public class MybatisPlusConfig {
|
||||
@SneakyThrows
|
||||
public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) {
|
||||
String sql = boundSql.getSql();
|
||||
check(sql);
|
||||
}
|
||||
|
||||
private void check(String sql) {
|
||||
List<String> sqlList = ThreadLocalUtils.get();
|
||||
if (CollectionUtils.isNotEmpty(sqlList)) {
|
||||
if (sqlList.stream().anyMatch(e -> Objects.equals(formatSql(sql), formatSql(e)))) {
|
||||
@ -122,20 +126,7 @@ public class MybatisPlusConfig {
|
||||
if (sql.toUpperCase().startsWith("SELECT")) {
|
||||
return;
|
||||
}
|
||||
List<String> sqlList = ThreadLocalUtils.get();
|
||||
if (CollectionUtils.isNotEmpty(sqlList)) {
|
||||
if (sqlList.stream().anyMatch(e -> Objects.equals(formatSql(sql), formatSql(e)))) {
|
||||
System.out.println("===============================================");
|
||||
System.out.println();
|
||||
System.out.println("pass");
|
||||
System.out.println();
|
||||
System.out.println("===============================================");
|
||||
} else {
|
||||
System.err.println("执行sql: " + SqlSourceBuilder.removeExtraWhitespaces(sql));
|
||||
sqlList.forEach(i -> System.err.println("预期sql: " + SqlSourceBuilder.removeExtraWhitespaces(i)));
|
||||
throw new RuntimeException("sql error");
|
||||
}
|
||||
}
|
||||
check(sql);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,8 +25,9 @@ class CustomWrapperTest {
|
||||
|
||||
//自定义wrapper扩展
|
||||
class CWrapper<T> : KtLambdaWrapper<T>() {
|
||||
|
||||
fun eqIfAbsent(column: KProperty<*>, `val`: Any?): CWrapper<T> {
|
||||
super.eq(Objects.nonNull(`val`), column, `val`)
|
||||
eq(Objects.nonNull(`val`), column, `val`)
|
||||
return this
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,49 @@
|
||||
package com.github.yulichang.test.kt.m
|
||||
|
||||
import com.github.yulichang.kt.KtLambdaWrapper
|
||||
import com.github.yulichang.test.kt.entity.UserDO
|
||||
import com.github.yulichang.test.util.ThreadLocalUtils
|
||||
import com.github.yulichang.toolkit.KtWrappers
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
|
||||
@SpringBootTest
|
||||
class OrderByTest {
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
com.github.yulichang.test.util.Reset.reset()
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun orderBy() {
|
||||
ThreadLocalUtils.set(
|
||||
"SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by " +
|
||||
"FROM `user` t WHERE t.del = false AND (t.id = ?) ORDER BY t.id ASC, t.`name` ASC, t.pid ASC"
|
||||
)
|
||||
val columList: List<KMutableProperty1<UserDO, *>> =
|
||||
listOf<KMutableProperty1<UserDO, *>>(UserDO::id, UserDO::name, UserDO::pid)
|
||||
val wrapper: KtLambdaWrapper<UserDO> = KtWrappers.query(UserDO::class.java)
|
||||
.selectAll(UserDO::class.java)
|
||||
.eq(UserDO::id, 1)
|
||||
.orderByAsc(columList)
|
||||
val list: List<UserDO> = wrapper.list()
|
||||
list.forEach(System.out::println)
|
||||
}
|
||||
|
||||
@org.junit.jupiter.api.Test
|
||||
fun orderBy1() {
|
||||
ThreadLocalUtils.set(
|
||||
"SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by " +
|
||||
"FROM `user` t WHERE t.del = false AND (t.id = ?) GROUP BY t.id, t.`name`, t.pid"
|
||||
)
|
||||
val columList: List<KMutableProperty1<UserDO, *>> =
|
||||
listOf<KMutableProperty1<UserDO, *>>(UserDO::id, UserDO::name, UserDO::pid)
|
||||
val wrapper: KtLambdaWrapper<UserDO> = KtWrappers.query(UserDO::class.java)
|
||||
.selectAll(UserDO::class.java)
|
||||
.eq(UserDO::id, 1)
|
||||
.groupBy(columList)
|
||||
val list: List<UserDO> = wrapper.list()
|
||||
list.forEach(System.out::println)
|
||||
}
|
||||
}
|
@ -0,0 +1,88 @@
|
||||
package com.github.yulichang.test.kt.m
|
||||
|
||||
import com.github.yulichang.kt.KtLambdaWrapper
|
||||
import com.github.yulichang.test.kt.entity.AddressDO
|
||||
import com.github.yulichang.test.kt.entity.AreaDO
|
||||
import com.github.yulichang.test.kt.entity.UserDO
|
||||
import com.github.yulichang.test.kt.mapper.UserMapper
|
||||
import com.github.yulichang.test.util.Reset
|
||||
import com.github.yulichang.test.util.ThreadLocalUtils
|
||||
import com.github.yulichang.toolkit.KtWrappers
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.springframework.beans.factory.annotation.Autowired
|
||||
import org.springframework.boot.test.context.SpringBootTest
|
||||
|
||||
@SpringBootTest
|
||||
class TableAliasTest {
|
||||
|
||||
@Autowired
|
||||
private val userMapper: UserMapper? = null
|
||||
|
||||
@BeforeEach
|
||||
fun setUp() {
|
||||
Reset.reset()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun tableAlias() {
|
||||
ThreadLocalUtils.set(
|
||||
"SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " +
|
||||
"LEFT JOIN address addr1 ON (addr1.id = t.address_id) " +
|
||||
"LEFT JOIN address addr2 ON (addr2.id = t.address_id2) " +
|
||||
"LEFT JOIN area area1 ON (area1.id = addr1.area_id) " +
|
||||
"WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " +
|
||||
"GROUP BY t.id"
|
||||
)
|
||||
val wrapper: KtLambdaWrapper<UserDO> = KtWrappers.query(UserDO::class.java)
|
||||
.selectAll(UserDO::class.java)
|
||||
.leftJoin(AddressDO::class.java, "addr1", AddressDO::id, UserDO::addressId)
|
||||
.leftJoin(AddressDO::class.java, "addr2", AddressDO::id, UserDO::addressId2)
|
||||
.leftJoin(AreaDO::class.java, "area1", AreaDO::id, "addr1", AddressDO::areaId)
|
||||
.groupBy(UserDO::id)
|
||||
val dos: List<UserDO> = userMapper!!.selectJoinList(UserDO::class.java, wrapper)
|
||||
dos.forEach(System.out::println)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun tableAlias2() {
|
||||
ThreadLocalUtils.set(
|
||||
"SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " +
|
||||
"LEFT JOIN address addr1 ON (addr1.id = t.address_id) " +
|
||||
"LEFT JOIN address addr2 ON (addr2.id = t.address_id2) " +
|
||||
"LEFT JOIN area area1 ON (area1.id = addr2.area_id) " +
|
||||
"WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " +
|
||||
"GROUP BY t.id ORDER BY addr1.id DESC"
|
||||
)
|
||||
val wrapper: KtLambdaWrapper<UserDO> = KtWrappers.query(UserDO::class.java)
|
||||
.selectAll(UserDO::class.java)
|
||||
.leftJoin(AddressDO::class.java, "addr1", AddressDO::id, UserDO::addressId)
|
||||
.leftJoin(AddressDO::class.java, "addr2", AddressDO::id, UserDO::addressId2)
|
||||
.leftJoin(AreaDO::class.java, "area1", AreaDO::id, "addr2", AddressDO::areaId)
|
||||
.groupBy(UserDO::id)
|
||||
.orderByDesc("addr1", AddressDO::id)
|
||||
val dos: List<UserDO> = userMapper!!.selectJoinList(UserDO::class.java, wrapper)
|
||||
dos.forEach(System.out::println)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun tableAliasEQ() {
|
||||
ThreadLocalUtils.set(
|
||||
"SELECT t.id, t.pid, t.`name`, t.`json`, t.sex, t.head_img, t.create_time, t.address_id, t.address_id2, t.del, t.create_by, t.update_by FROM `user` t " +
|
||||
"LEFT JOIN address addr1 ON (addr1.id = t.address_id) " +
|
||||
"LEFT JOIN address addr2 ON (addr2.id = t.address_id2) " +
|
||||
"LEFT JOIN area area1 ON (area1.id = addr2.area_id) WHERE t.del = false AND addr1.del = false AND addr2.del = false AND area1.del = false " +
|
||||
"AND (addr1.id = ? AND addr2.id = ? AND addr1.id = ?)"
|
||||
)
|
||||
val wrapper: KtLambdaWrapper<UserDO> = KtWrappers.query(UserDO::class.java)
|
||||
.selectAll(UserDO::class.java)
|
||||
.leftJoin(AddressDO::class.java, "addr1", AddressDO::id, UserDO::addressId)
|
||||
.leftJoin(AddressDO::class.java, "addr2", AddressDO::id, UserDO::addressId2)
|
||||
.leftJoin(AreaDO::class.java, "area1", AreaDO::id, "addr2", AddressDO::areaId)
|
||||
.eq("addr1", AddressDO::id, 1)
|
||||
.eq("addr2", AddressDO::id, 2)
|
||||
.eq("addr1", AddressDO::id, 3)
|
||||
val dos: List<UserDO> = userMapper!!.selectJoinList(UserDO::class.java, wrapper)
|
||||
dos.forEach(System.out::println)
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user