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
aa0f9e87bf
commit
8170305daf
@ -30,7 +30,7 @@ public class MPJInterceptorConfig {
|
||||
System.out.println(" _ _ |_ _ _|_. ___ _ | _ . _ . _ \n" +
|
||||
"| | |\\/|_)(_| | |_\\ |_)||_|_\\ | (_) | | | \n" +
|
||||
" / | /\n" +
|
||||
" 1.4.7.2");
|
||||
" 1.4.8");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -253,7 +253,7 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
|
||||
* 例: wrapper.union(UserDO.class, union -> union.selectAll(UserDO.class))
|
||||
*
|
||||
* @param clazz union语句的主表类型
|
||||
* @since 1.4.7.3
|
||||
* @since 1.4.8
|
||||
*/
|
||||
public <U> KtLambdaWrapper<T> union(Class<U> clazz, Consumer<KtLambdaWrapper<U>> consumer) {
|
||||
KtLambdaWrapper<U> unionWrapper = KtWrappers.query(clazz);
|
||||
@ -301,7 +301,7 @@ public class KtLambdaWrapper<T> extends KtAbstractLambdaWrapper<T, KtLambdaWrapp
|
||||
* 例: wrapper.unionAll(UserDO.class, union -> union.selectAll(UserDO.class))
|
||||
*
|
||||
* @param clazz union语句的主表类型
|
||||
* @since 1.4.7.3
|
||||
* @since 1.4.8
|
||||
*/
|
||||
public <U> KtLambdaWrapper<T> unionAll(Class<U> clazz, Consumer<KtLambdaWrapper<U>> consumer) {
|
||||
KtLambdaWrapper<U> unionWrapper = KtWrappers.query(clazz);
|
||||
|
@ -6,7 +6,7 @@ import java.util.Locale;
|
||||
/**
|
||||
* @author yulichang
|
||||
* @see HashMap
|
||||
* @since 1.4.7.3
|
||||
* @since 1.4.8
|
||||
*/
|
||||
public class FieldStringMap<V> extends HashMap<String, V> {
|
||||
|
||||
|
@ -219,19 +219,19 @@ public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLa
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <X> String columnToString(Integer index, X column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
return columnToString(index, (SFunction<?, ?>) column, isJoin, prefixEnum);
|
||||
protected <X> String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
return columnToString(index, alias, (SFunction<?, ?>) column, isJoin, prefixEnum);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SafeVarargs
|
||||
protected final <X> String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, X... columns) {
|
||||
return Arrays.stream(columns).map(i -> columnToString(index, (SFunction<?, ?>) i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
protected final <X> String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, X... columns) {
|
||||
return Arrays.stream(columns).map(i -> columnToString(index, alias, (SFunction<?, ?>) i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
protected String columnToString(Integer index, SFunction<?, ?> column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
protected String columnToString(Integer index, String alias, SFunction<?, ?> column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
Class<?> entityClass = LambdaUtils.getEntityClass(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(SFunction<?, ?> fn) {
|
||||
@ -378,7 +378,7 @@ public abstract class MPJAbstractLambdaWrapper<T, Children extends MPJAbstractLa
|
||||
TableInfo info = TableHelper.get(clazz);
|
||||
Asserts.hasTable(info, clazz);
|
||||
Children instance = instance(newIndex, keyWord, clazz, info.getTableName());
|
||||
instance.isNo = true;
|
||||
instance.isOn = true;
|
||||
instance.isMain = false;
|
||||
onWrappers.add(instance);
|
||||
if (StringUtils.isBlank(tableAlias)) {
|
||||
|
@ -37,7 +37,7 @@ import static java.util.stream.Collectors.joining;
|
||||
*
|
||||
* @author yulichang
|
||||
*/
|
||||
@SuppressWarnings("ALL")
|
||||
@SuppressWarnings({"unchecked", "unused", "DuplicatedCode"})
|
||||
public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<T, Children>> extends Wrapper<T>
|
||||
implements Compare<Children>, Nested<Children, Children>, Join<Children>, Func<Children>, OnCompare<Children>,
|
||||
CompareStr<Children, String>, FuncStr<Children, String> {
|
||||
@ -56,6 +56,7 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
*/
|
||||
@Getter
|
||||
protected AtomicInteger paramNameSeq;
|
||||
@Getter
|
||||
protected Map<String, Object> paramNameValuePairs;
|
||||
/**
|
||||
* 其他
|
||||
@ -102,7 +103,7 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
/**
|
||||
* 是否是OnWrapper
|
||||
*/
|
||||
protected boolean isNo = false;
|
||||
protected boolean isOn = false;
|
||||
|
||||
/**
|
||||
* 关联的表
|
||||
@ -201,64 +202,64 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children eq(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, column, EQ, val);
|
||||
public <X> Children eq(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, alias, column, EQ, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children ne(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, column, NE, val);
|
||||
public <X> Children ne(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, alias, column, NE, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children gt(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, column, GT, val);
|
||||
public <X> Children gt(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, alias, column, GT, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children ge(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, column, GE, val);
|
||||
public <X> Children ge(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, alias, column, GE, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children lt(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, column, LT, val);
|
||||
public <X> Children lt(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, alias, column, LT, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children le(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, column, LE, val);
|
||||
public <X> Children le(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return addCondition(condition, alias, column, LE, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children like(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, LIKE, column, val, SqlLike.DEFAULT);
|
||||
public <X> Children like(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, LIKE, alias, column, val, SqlLike.DEFAULT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children notLike(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, NOT_LIKE, column, val, SqlLike.DEFAULT);
|
||||
public <X> Children notLike(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, NOT_LIKE, alias, column, val, SqlLike.DEFAULT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children likeLeft(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, LIKE, column, val, SqlLike.LEFT);
|
||||
public <X> Children likeLeft(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, LIKE, alias, column, val, SqlLike.LEFT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children likeRight(boolean condition, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, LIKE, column, val, SqlLike.RIGHT);
|
||||
public <X> Children likeRight(boolean condition, String alias, SFunction<X, ?> column, Object val) {
|
||||
return likeValue(condition, LIKE, alias, column, val, SqlLike.RIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children between(boolean condition, SFunction<X, ?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), BETWEEN,
|
||||
public <X> Children between(boolean condition, String alias, SFunction<X, ?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), BETWEEN,
|
||||
() -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children notBetween(boolean condition, SFunction<X, ?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_BETWEEN,
|
||||
public <X> Children notBetween(boolean condition, String alias, SFunction<X, ?> column, Object val1, Object val2) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_BETWEEN,
|
||||
() -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
|
||||
}
|
||||
|
||||
@ -329,89 +330,89 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children isNull(boolean condition, SFunction<X, ?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IS_NULL));
|
||||
public <X> Children isNull(boolean condition, String alias, SFunction<X, ?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NULL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children isNotNull(boolean condition, SFunction<X, ?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IS_NOT_NULL));
|
||||
public <X> Children isNotNull(boolean condition, String alias, SFunction<X, ?> column) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NOT_NULL));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children in(boolean condition, SFunction<X, ?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, inExpression(coll)));
|
||||
public <X> Children in(boolean condition, String alias, SFunction<X, ?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(coll)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children in(boolean condition, SFunction<X, ?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, inExpression(values)));
|
||||
public <X> Children in(boolean condition, String alias, SFunction<X, ?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(values)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children notIn(boolean condition, SFunction<X, ?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, inExpression(coll)));
|
||||
public <X> Children notIn(boolean condition, String alias, SFunction<X, ?> column, Collection<?> coll) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(coll)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children notIn(boolean condition, SFunction<X, ?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, inExpression(values)));
|
||||
public <X> Children notIn(boolean condition, String alias, SFunction<X, ?> column, Object... values) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(values)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children inSql(boolean condition, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN,
|
||||
public <X> Children inSql(boolean condition, String alias, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children notInSql(boolean condition, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN,
|
||||
public <X> Children notInSql(boolean condition, String alias, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public <X> Children gtSql(boolean condition, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), GT,
|
||||
public <X> Children gtSql(boolean condition, String alias, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GT,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children geSql(boolean condition, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), GE,
|
||||
public <X> Children geSql(boolean condition, String alias, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GE,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children ltSql(boolean condition, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), LT,
|
||||
public <X> Children ltSql(boolean condition, String alias, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LT,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children leSql(boolean condition, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), LE,
|
||||
public <X> Children leSql(boolean condition, String alias, SFunction<X, ?> column, String inValue) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LE,
|
||||
() -> String.format("(%s)", inValue)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R> Children groupBy(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
public <R> Children groupBy(boolean condition, String alias, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
String one = (StringPool.COMMA + columnsToString(index, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns));
|
||||
final String finalOne = one;
|
||||
final String finalOne = (StringPool.COMMA + columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns));
|
||||
appendSqlSegments(GROUP_BY, () -> finalOne);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
@Override
|
||||
public <X> Children groupBy(boolean condition, SFunction<X, ?> column, SFunction<X, ?>... columns) {
|
||||
public final <X> Children groupBy(boolean condition, String alias, SFunction<X, ?> column, SFunction<X, ?>... columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
String one = columnToString(index, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
String one = columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
one += (StringPool.COMMA + columnsToString(index, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns));
|
||||
one += (StringPool.COMMA + columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns));
|
||||
}
|
||||
final String finalOne = one;
|
||||
appendSqlSegments(GROUP_BY, () -> finalOne);
|
||||
@ -419,35 +420,33 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R> Children orderByAsc(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
public <R> Children orderByAsc(boolean condition, String alias, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
final SqlKeyword mode = ASC;
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
columns.forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode));
|
||||
columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), ASC));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R> Children orderByDesc(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
public <R> Children orderByDesc(boolean condition, String alias, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
final SqlKeyword mode = DESC;
|
||||
if (CollectionUtils.isNotEmpty(columns)) {
|
||||
columns.forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode));
|
||||
columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), DESC));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public <X> Children orderBy(boolean condition, boolean isAsc, SFunction<X, ?> column, SFunction<X, ?>... columns) {
|
||||
public <X> Children orderBy(boolean condition, boolean isAsc, String alias, SFunction<X, ?> column, SFunction<X, ?>... columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
final SqlKeyword mode = isAsc ? ASC : DESC;
|
||||
appendSqlSegments(ORDER_BY, columnToSqlSegment(index, column, false), mode);
|
||||
appendSqlSegments(ORDER_BY, columnToSqlSegment(index, alias, column), mode);
|
||||
if (ArrayUtils.isNotEmpty(columns)) {
|
||||
Arrays.stream(columns).forEach(c -> appendSqlSegments(ORDER_BY,
|
||||
columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode));
|
||||
columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), mode));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -456,7 +455,6 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
* 字段 SQL 注入过滤处理,子类重写实现过滤逻辑
|
||||
*
|
||||
* @param column 字段内容
|
||||
* @return
|
||||
*/
|
||||
protected <X> SFunction<X, ?> columnSqlInjectFilter(SFunction<X, ?> column) {
|
||||
return column;
|
||||
@ -493,8 +491,8 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
* 内部自用
|
||||
* <p>拼接 LIKE 以及 值</p>
|
||||
*/
|
||||
protected <X> Children likeValue(boolean condition, SqlKeyword keyword, SFunction<X, ?> column, Object val, SqlLike sqlLike) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), keyword,
|
||||
protected <X> Children likeValue(boolean condition, SqlKeyword keyword, String alias, SFunction<X, ?> column, Object val, SqlLike sqlLike) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), keyword,
|
||||
() -> formatParam(null, SqlUtils.concatLike(val, sqlLike))));
|
||||
}
|
||||
|
||||
@ -511,18 +509,18 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
* @param sqlKeyword SQL 关键词
|
||||
* @param val 条件值
|
||||
*/
|
||||
protected <X> Children addCondition(boolean condition, SFunction<X, ?> column, SqlKeyword sqlKeyword, Object val) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), sqlKeyword,
|
||||
protected <X> Children addCondition(boolean condition, String alias, SFunction<X, ?> column, SqlKeyword sqlKeyword, Object val) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword,
|
||||
() -> formatParam(null, val)));
|
||||
}
|
||||
|
||||
protected <X, S> Children addCondition(boolean condition, SFunction<X, ?> column, SqlKeyword sqlKeyword, SFunction<S, ?> val) {
|
||||
protected <X, S> Children addCondition(boolean condition, String alias, SFunction<X, ?> column,
|
||||
SqlKeyword sqlKeyword, String rightAlias, SFunction<S, ?> val) {
|
||||
Class<X> c = LambdaUtils.getEntityClass(column);
|
||||
Class<S> v = LambdaUtils.getEntityClass(val);
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), sqlKeyword,
|
||||
isNo ?
|
||||
columnToSqlSegmentS(index, val, v == c && v == joinClass) :
|
||||
columnToSqlSegmentS(index, val, v == c)
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword,
|
||||
isOn ? columnToSqlSegmentS(index, rightAlias, val, v == c && v == joinClass) :
|
||||
columnToSqlSegmentS(index, rightAlias, val, v == c)
|
||||
));
|
||||
}
|
||||
|
||||
@ -563,6 +561,7 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
* @param params 参数
|
||||
* @return sql片段
|
||||
*/
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
protected final String formatSqlMaybeWithParam(String sqlStr, String mapping, Object... params) {
|
||||
if (StringUtils.isBlank(sqlStr)) {
|
||||
// todo 何时会这样?
|
||||
@ -646,7 +645,7 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
onWrappers.clear();
|
||||
index = null;
|
||||
isMain = true;
|
||||
isNo = false;
|
||||
isOn = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -684,10 +683,6 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
return expression;
|
||||
}
|
||||
|
||||
public Map<String, Object> getParamNameValuePairs() {
|
||||
return paramNameValuePairs;
|
||||
}
|
||||
|
||||
public String getParamAlias() {
|
||||
return paramAlias.getStringValue() == null ? Constants.WRAPPER : paramAlias.getStringValue();
|
||||
}
|
||||
@ -698,6 +693,7 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
* @param paramAlias 参数别名
|
||||
* @return Children
|
||||
*/
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
public Children setParamAlias(String paramAlias) {
|
||||
Assert.notEmpty(paramAlias, "paramAlias can not be empty!");
|
||||
this.paramAlias.setStringValue(paramAlias);
|
||||
@ -707,28 +703,28 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
/**
|
||||
* 获取 columnName
|
||||
*/
|
||||
protected final <X> ISqlSegment columnToSqlSegment(Integer index, SFunction<X, ?> column, boolean isJoin) {
|
||||
return () -> columnToString(index, column, isJoin, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
protected final <X> ISqlSegment columnToSqlSegment(Integer index, String alias, SFunction<X, ?> column) {
|
||||
return () -> columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
}
|
||||
|
||||
protected final <X> ISqlSegment columnToSqlSegmentS(Integer index, SFunction<X, ?> column, boolean isJoin) {
|
||||
protected final <X> ISqlSegment columnToSqlSegmentS(Integer index, String alias, SFunction<X, ?> column, boolean isJoin) {
|
||||
PrefixEnum prefixEnum;
|
||||
if (isMain) {
|
||||
prefixEnum = isNo ? PrefixEnum.ON_SECOND /* 理论上不可能有这种情况 */ : PrefixEnum.CD_SECOND;
|
||||
prefixEnum = isOn ? PrefixEnum.ON_SECOND /* 理论上不可能有这种情况 */ : PrefixEnum.CD_SECOND;
|
||||
} else {
|
||||
prefixEnum = isNo ? PrefixEnum.ON_SECOND : PrefixEnum.CD_ON_SECOND;
|
||||
prefixEnum = isOn ? PrefixEnum.ON_SECOND : PrefixEnum.CD_ON_SECOND;
|
||||
}
|
||||
return () -> columnToString(index, column, isJoin, prefixEnum);
|
||||
return () -> columnToString(index, alias, column, isJoin, prefixEnum);
|
||||
}
|
||||
|
||||
protected final <X> ISqlSegment columnToSqlSegment(String column) {
|
||||
protected final ISqlSegment columnToSqlSegment(String column) {
|
||||
return () -> columnsToString(column);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 columnName
|
||||
*/
|
||||
protected <X> String columnToString(Integer index, X column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
protected <X> String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
return (String) column;
|
||||
}
|
||||
|
||||
@ -753,12 +749,10 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
*
|
||||
* @param columns 多字段
|
||||
*/
|
||||
protected <X> String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, X... columns) {
|
||||
return Arrays.stream(columns).map(i -> this.columnToString(index, i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
abstract <X> String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, X... columns);
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||
public Children clone() {
|
||||
return SerializationUtils.clone(typedThis);
|
||||
}
|
||||
@ -775,33 +769,33 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
/* ************************* on语句重载 *************************** */
|
||||
|
||||
@Override
|
||||
public <R, S> Children eq(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return addCondition(condition, column, EQ, val);
|
||||
public <R, S> Children eq(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return addCondition(condition, alias, column, EQ, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, S> Children ne(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return addCondition(condition, column, NE, val);
|
||||
public <R, S> Children ne(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return addCondition(condition, alias, column, NE, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, S> Children gt(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return addCondition(condition, column, GT, val);
|
||||
public <R, S> Children gt(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return addCondition(condition, alias, column, GT, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, S> Children ge(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return addCondition(condition, column, GE, val);
|
||||
public <R, S> Children ge(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return addCondition(condition, alias, column, GE, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, S> Children lt(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return addCondition(condition, column, LT, val);
|
||||
public <R, S> Children lt(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return addCondition(condition, alias, column, LT, rightAlias, val);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, S> Children le(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return addCondition(condition, column, LE, val);
|
||||
public <R, S> Children le(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return addCondition(condition, alias, column, LE, rightAlias, val);
|
||||
}
|
||||
|
||||
/* ****************************************** **/
|
||||
|
@ -252,7 +252,7 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
|
||||
* 例: wrapper.union(UserDO.class, union -> union.selectAll(UserDO.class))
|
||||
*
|
||||
* @param clazz union语句的主表类型
|
||||
* @since 1.4.7.3
|
||||
* @since 1.4.8
|
||||
*/
|
||||
public <U> MPJLambdaWrapper<T> union(Class<U> clazz, Consumer<MPJLambdaWrapper<U>> consumer) {
|
||||
MPJLambdaWrapper<U> unionWrapper = JoinWrappers.lambda(clazz);
|
||||
@ -300,7 +300,7 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
|
||||
* 例: wrapper.unionAll(UserDO.class, union -> union.selectAll(UserDO.class))
|
||||
*
|
||||
* @param clazz union语句的主表类型
|
||||
* @since 1.4.7.3
|
||||
* @since 1.4.8
|
||||
*/
|
||||
public <U> MPJLambdaWrapper<T> unionAll(Class<U> clazz, Consumer<MPJLambdaWrapper<U>> consumer) {
|
||||
MPJLambdaWrapper<U> unionWrapper = JoinWrappers.lambda(clazz);
|
||||
|
@ -14,16 +14,12 @@ import java.util.function.BiPredicate;
|
||||
@SuppressWarnings("unused")
|
||||
public interface Compare<Children> extends Serializable {
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default <R, V> Children allEq(Map<SFunction<R, ?>, V> params) {
|
||||
return allEq(params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default <R, V> Children allEq(Map<SFunction<R, ?>, V> params, boolean null2IsNull) {
|
||||
return allEq(true, params, null2IsNull);
|
||||
}
|
||||
@ -38,16 +34,12 @@ public interface Compare<Children> extends Serializable {
|
||||
*/
|
||||
<R, V> Children allEq(boolean condition, Map<SFunction<R, ?>, V> params, boolean null2IsNull);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default <R, V> Children allEq(BiPredicate<SFunction<R, ?>, V> filter, Map<SFunction<R, ?>, V> params) {
|
||||
return allEq(filter, params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default <R, V> Children allEq(BiPredicate<SFunction<R, ?>, V> filter, Map<SFunction<R, ?>, V> params, boolean null2IsNull) {
|
||||
return allEq(true, filter, params, null2IsNull);
|
||||
}
|
||||
@ -63,12 +55,16 @@ public interface Compare<Children> extends Serializable {
|
||||
*/
|
||||
<R, V> Children allEq(boolean condition, BiPredicate<SFunction<R, ?>, V> filter, Map<SFunction<R, ?>, V> params, boolean null2IsNull);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
default <R> Children eq(SFunction<R, ?> column, Object val) {
|
||||
return eq(true, column, val);
|
||||
return eq(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children eq(String alias, SFunction<R, ?> column, Object val) {
|
||||
return eq(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children eq(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return eq(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -79,30 +75,42 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children eq(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children eq(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children ne(SFunction<R, ?> column, Object val) {
|
||||
return ne(true, column, val);
|
||||
return ne(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children ne(String alias, SFunction<R, ?> column, Object val) {
|
||||
return ne(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children ne(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return ne(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
* 不等于 <>
|
||||
*
|
||||
* @param condition 执行条件
|
||||
* @param alias 字段别名
|
||||
* @param column 字段
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children ne(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children ne(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children gt(SFunction<R, ?> column, Object val) {
|
||||
return gt(true, column, val);
|
||||
return gt(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children gt(String alias, SFunction<R, ?> column, Object val) {
|
||||
return gt(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children gt(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return gt(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -113,13 +121,18 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children gt(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children gt(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children ge(SFunction<R, ?> column, Object val) {
|
||||
return ge(true, column, val);
|
||||
return ge(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children ge(String alias, SFunction<R, ?> column, Object val) {
|
||||
return ge(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children ge(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return ge(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -130,13 +143,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children ge(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children ge(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children lt(SFunction<R, ?> column, Object val) {
|
||||
return lt(true, column, val);
|
||||
return lt(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children lt(String alias, SFunction<R, ?> column, Object val) {
|
||||
return lt(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children lt(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return lt(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -147,13 +166,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children lt(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children lt(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children le(SFunction<R, ?> column, Object val) {
|
||||
return le(true, column, val);
|
||||
return le(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children le(String alias, SFunction<R, ?> column, Object val) {
|
||||
return le(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children le(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return le(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -164,13 +189,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children le(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children le(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children between(SFunction<R, ?> column, Object val1, Object val2) {
|
||||
return between(true, column, val1, val2);
|
||||
return between(true, null, column, val1, val2);
|
||||
}
|
||||
|
||||
default <R> Children between(String alias, SFunction<R, ?> column, Object val1, Object val2) {
|
||||
return between(true, alias, column, val1, val2);
|
||||
}
|
||||
|
||||
default <R> Children between(boolean condition, SFunction<R, ?> column, Object val1, Object val2) {
|
||||
return between(condition, null, column, val1, val2);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -182,13 +213,19 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val2 值2
|
||||
* @return children
|
||||
*/
|
||||
<R> Children between(boolean condition, SFunction<R, ?> column, Object val1, Object val2);
|
||||
<R> Children between(boolean condition, String alias, SFunction<R, ?> column, Object val1, Object val2);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children notBetween(SFunction<R, ?> column, Object val1, Object val2) {
|
||||
return notBetween(true, column, val1, val2);
|
||||
return notBetween(true, null, column, val1, val2);
|
||||
}
|
||||
|
||||
default <R> Children notBetween(String alias, SFunction<R, ?> column, Object val1, Object val2) {
|
||||
return notBetween(true, alias, column, val1, val2);
|
||||
}
|
||||
|
||||
default <R> Children notBetween(boolean condition, SFunction<R, ?> column, Object val1, Object val2) {
|
||||
return notBetween(condition, null, column, val1, val2);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -200,13 +237,18 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val2 值2
|
||||
* @return children
|
||||
*/
|
||||
<R> Children notBetween(boolean condition, SFunction<R, ?> column, Object val1, Object val2);
|
||||
<R> Children notBetween(boolean condition, String alias, SFunction<R, ?> column, Object val1, Object val2);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children like(SFunction<R, ?> column, Object val) {
|
||||
return like(true, column, val);
|
||||
return like(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children like(String alias, SFunction<R, ?> column, Object val) {
|
||||
return like(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children like(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return like(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -217,13 +259,18 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children like(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children like(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children notLike(SFunction<R, ?> column, Object val) {
|
||||
return notLike(true, column, val);
|
||||
return notLike(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children notLike(String alias, SFunction<R, ?> column, Object val) {
|
||||
return notLike(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children notLike(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return notLike(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -234,13 +281,18 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children notLike(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children notLike(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children likeLeft(SFunction<R, ?> column, Object val) {
|
||||
return likeLeft(true, column, val);
|
||||
return likeLeft(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children likeLeft(String alias, SFunction<R, ?> column, Object val) {
|
||||
return likeLeft(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children likeLeft(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return likeLeft(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -251,13 +303,18 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children likeLeft(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children likeLeft(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children likeRight(SFunction<R, ?> column, Object val) {
|
||||
return likeRight(true, column, val);
|
||||
return likeRight(true, null, column, val);
|
||||
}
|
||||
|
||||
default <R> Children likeRight(String alias, SFunction<R, ?> column, Object val) {
|
||||
return likeRight(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R> Children likeRight(boolean condition, SFunction<R, ?> column, Object val) {
|
||||
return likeRight(condition, null, column, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -268,5 +325,5 @@ public interface Compare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R> Children likeRight(boolean condition, SFunction<R, ?> column, Object val);
|
||||
<R> Children likeRight(boolean condition, String alias, SFunction<R, ?> column, Object val);
|
||||
}
|
||||
|
@ -12,15 +12,20 @@ import java.util.function.Consumer;
|
||||
* <p>
|
||||
* copy {@link com.baomidou.mybatisplus.core.conditions.interfaces.Func}
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "unused", "JavadocDeclaration"})
|
||||
@SuppressWarnings({"unchecked", "unused"})
|
||||
public interface Func<Children> extends Serializable {
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
|
||||
default <R> Children isNull(SFunction<R, ?> column) {
|
||||
return isNull(true, column);
|
||||
return isNull(true, null, column);
|
||||
}
|
||||
|
||||
default <R> Children isNull(String alias, SFunction<R, ?> column) {
|
||||
return isNull(true, alias, column);
|
||||
}
|
||||
|
||||
default <R> Children isNull(boolean condition, SFunction<R, ?> column) {
|
||||
return isNull(condition, null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -31,13 +36,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param column 字段
|
||||
* @return children
|
||||
*/
|
||||
<R> Children isNull(boolean condition, SFunction<R, ?> column);
|
||||
<R> Children isNull(boolean condition, String alias, SFunction<R, ?> column);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children isNotNull(SFunction<R, ?> column) {
|
||||
return isNotNull(true, column);
|
||||
return isNotNull(true, null, column);
|
||||
}
|
||||
|
||||
default <R> Children isNotNull(String alias, SFunction<R, ?> column) {
|
||||
return isNotNull(true, alias, column);
|
||||
}
|
||||
|
||||
default <R> Children isNotNull(boolean condition, SFunction<R, ?> column) {
|
||||
return isNotNull(condition, null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,13 +59,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param column 字段
|
||||
* @return children
|
||||
*/
|
||||
<R> Children isNotNull(boolean condition, SFunction<R, ?> column);
|
||||
<R> Children isNotNull(boolean condition, String alias, SFunction<R, ?> column);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children in(SFunction<R, ?> column, Collection<?> coll) {
|
||||
return in(true, column, coll);
|
||||
return in(true, null, column, coll);
|
||||
}
|
||||
|
||||
default <R> Children in(String alias, SFunction<R, ?> column, Collection<?> coll) {
|
||||
return in(true, alias, column, coll);
|
||||
}
|
||||
|
||||
default <R> Children in(boolean condition, SFunction<R, ?> column, Collection<?> coll) {
|
||||
return in(condition, null, column, coll);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,13 +86,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param coll 数据集合
|
||||
* @return children
|
||||
*/
|
||||
<R> Children in(boolean condition, SFunction<R, ?> column, Collection<?> coll);
|
||||
<R> Children in(boolean condition, String alias, SFunction<R, ?> column, Collection<?> coll);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children in(SFunction<R, ?> column, Object... values) {
|
||||
return in(true, column, values);
|
||||
return in(true, null, column, values);
|
||||
}
|
||||
|
||||
default <R> Children in(String alias, SFunction<R, ?> column, Object... values) {
|
||||
return in(true, alias, column, values);
|
||||
}
|
||||
|
||||
default <R> Children in(boolean condition, SFunction<R, ?> column, Object... values) {
|
||||
return in(condition, null, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -90,13 +113,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param values 数据数组
|
||||
* @return children
|
||||
*/
|
||||
<R> Children in(boolean condition, SFunction<R, ?> column, Object... values);
|
||||
<R> Children in(boolean condition, String alias, SFunction<R, ?> column, Object... values);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children notIn(SFunction<R, ?> column, Collection<?> coll) {
|
||||
return notIn(true, column, coll);
|
||||
return notIn(true, null, column, coll);
|
||||
}
|
||||
|
||||
default <R> Children notIn(String alias, SFunction<R, ?> column, Collection<?> coll) {
|
||||
return notIn(true, alias, column, coll);
|
||||
}
|
||||
|
||||
default <R> Children notIn(boolean condition, SFunction<R, ?> column, Collection<?> coll) {
|
||||
return notIn(condition, null, column, coll);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -108,13 +137,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param coll 数据集合
|
||||
* @return children
|
||||
*/
|
||||
<R> Children notIn(boolean condition, SFunction<R, ?> column, Collection<?> coll);
|
||||
<R> Children notIn(boolean condition, String alias, SFunction<R, ?> column, Collection<?> coll);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children notIn(SFunction<R, ?> column, Object... value) {
|
||||
return notIn(true, column, value);
|
||||
|
||||
default <R> Children notIn(SFunction<R, ?> column, Object... values) {
|
||||
return notIn(true, null, column, values);
|
||||
}
|
||||
|
||||
default <R> Children notIn(String alias, SFunction<R, ?> column, Object... values) {
|
||||
return notIn(true, alias, column, values);
|
||||
}
|
||||
|
||||
default <R> Children notIn(boolean condition, SFunction<R, ?> column, Object... values) {
|
||||
return notIn(condition, null, column, values);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -126,13 +161,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param values 数据数组
|
||||
* @return children
|
||||
*/
|
||||
<R> Children notIn(boolean condition, SFunction<R, ?> column, Object... values);
|
||||
<R> Children notIn(boolean condition, String alias, SFunction<R, ?> column, Object... values);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children inSql(SFunction<R, ?> column, String inValue) {
|
||||
return inSql(true, column, inValue);
|
||||
return inSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children inSql(String alias, SFunction<R, ?> column, String inValue) {
|
||||
return inSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children inSql(boolean condition, SFunction<R, ?> column, String inValue) {
|
||||
return inSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -146,13 +187,19 @@ public interface Func<Children> extends Serializable {
|
||||
* @param inValue sql语句
|
||||
* @return children
|
||||
*/
|
||||
<R> Children inSql(boolean condition, SFunction<R, ?> column, String inValue);
|
||||
<R> Children inSql(boolean condition, String alias, SFunction<R, ?> column, String inValue);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children notInSql(SFunction<R, ?> column, String inValue) {
|
||||
return notInSql(true, column, inValue);
|
||||
return notInSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children notInSql(String alias, SFunction<R, ?> column, String inValue) {
|
||||
return notInSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children notInSql(boolean condition, SFunction<R, ?> 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
|
||||
*/
|
||||
<R> Children notInSql(boolean condition, SFunction<R, ?> column, String inValue);
|
||||
<R> Children notInSql(boolean condition, String alias, SFunction<R, ?> column, String inValue);
|
||||
|
||||
default <R> Children gtSql(SFunction<R, ?> column, String inValue) {
|
||||
return gtSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children gtSql(String alias, SFunction<R, ?> column, String inValue) {
|
||||
return gtSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children gtSql(boolean condition, SFunction<R, ?> 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语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3
|
||||
* @return children
|
||||
*/
|
||||
<R> Children gtSql(boolean condition, SFunction<R, ?> column, String inValue);
|
||||
<R> Children gtSql(boolean condition, String alias, SFunction<R, ?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children gtSql(SFunction<R, ?> column, String inValue) {
|
||||
return gtSql(true, column, inValue);
|
||||
default <R> Children geSql(SFunction<R, ?> column, String inValue) {
|
||||
return geSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children geSql(String alias, SFunction<R, ?> column, String inValue) {
|
||||
return geSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children geSql(boolean condition, SFunction<R, ?> column, String inValue) {
|
||||
return geSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -193,18 +256,23 @@ 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语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3
|
||||
* @return children
|
||||
*/
|
||||
<R> Children geSql(boolean condition, SFunction<R, ?> column, String inValue);
|
||||
<R> Children geSql(boolean condition, String alias, SFunction<R, ?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children geSql(SFunction<R, ?> column, String inValue) {
|
||||
return geSql(true, column, inValue);
|
||||
default <R> Children ltSql(SFunction<R, ?> column, String inValue) {
|
||||
return ltSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children ltSql(String alias, SFunction<R, ?> column, String inValue) {
|
||||
return ltSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children ltSql(boolean condition, SFunction<R, ?> column, String inValue) {
|
||||
return ltSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -212,18 +280,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语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3
|
||||
* @return children
|
||||
*/
|
||||
<R> Children ltSql(boolean condition, SFunction<R, ?> column, String inValue);
|
||||
<R> Children ltSql(boolean condition, String alias, SFunction<R, ?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children ltSql(SFunction<R, ?> column, String inValue) {
|
||||
return ltSql(true, column, inValue);
|
||||
default <R> Children leSql(SFunction<R, ?> column, String inValue) {
|
||||
return leSql(true, null, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children leSql(String alias, SFunction<R, ?> column, String inValue) {
|
||||
return leSql(true, alias, column, inValue);
|
||||
}
|
||||
|
||||
default <R> Children leSql(boolean condition, SFunction<R, ?> column, String inValue) {
|
||||
return leSql(condition, null, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -231,44 +304,47 @@ 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语句 ---> 1,2,3,4,5,6 或者 select id from table where id < 3
|
||||
* @return children
|
||||
*/
|
||||
<R> Children leSql(boolean condition, SFunction<R, ?> column, String inValue);
|
||||
<R> Children leSql(boolean condition, String alias, SFunction<R, ?> column, String inValue);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children leSql(SFunction<R, ?> column, String inValue) {
|
||||
return leSql(true, column, inValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children groupBy(SFunction<R, ?> column) {
|
||||
return groupBy(true, column);
|
||||
return groupBy(true, (String) null, column);
|
||||
}
|
||||
|
||||
default <R> Children groupBy(String alias, SFunction<R, ?> column) {
|
||||
return groupBy(true, alias, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children groupBy(List<SFunction<R, ?>> column) {
|
||||
return groupBy(true, column);
|
||||
return groupBy(true, null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
<R> Children groupBy(boolean condition, List<SFunction<R, ?>> columns);
|
||||
default <R> Children groupBy(String alias, List<SFunction<R, ?>> column) {
|
||||
return groupBy(true, alias, column);
|
||||
}
|
||||
|
||||
default <R> Children groupBy(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
return groupBy(condition, null, columns);
|
||||
}
|
||||
|
||||
|
||||
<R> Children groupBy(boolean condition, String alias, List<SFunction<R, ?>> columns);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children groupBy(SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return groupBy(true, column, columns);
|
||||
return groupBy(true, null, column, columns);
|
||||
}
|
||||
|
||||
default <R> Children groupBy(String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return groupBy(true, alias, column, columns);
|
||||
}
|
||||
|
||||
default <R> Children groupBy(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return groupBy(condition, null, column, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -280,32 +356,42 @@ public interface Func<Children> extends Serializable {
|
||||
* @param columns 字段数组
|
||||
* @return children
|
||||
*/
|
||||
<R> Children groupBy(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns);
|
||||
<R> Children groupBy(boolean condition, String alias, SFunction<R, ?> column, SFunction<R, ?>... columns);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByAsc(SFunction<R, ?> column) {
|
||||
return orderByAsc(true, column);
|
||||
return orderByAsc(true, (String) null, column);
|
||||
}
|
||||
|
||||
default <R> Children orderByAsc(String alias, SFunction<R, ?> column) {
|
||||
return orderByAsc(true, alias, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByAsc(List<SFunction<R, ?>> columns) {
|
||||
return orderByAsc(true, columns);
|
||||
return orderByAsc(true, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
<R> Children orderByAsc(boolean condition, List<SFunction<R, ?>> columns);
|
||||
default <R> Children orderByAsc(String alias, List<SFunction<R, ?>> columns) {
|
||||
return orderByAsc(true, alias, columns);
|
||||
}
|
||||
|
||||
default <R> Children orderByAsc(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
return orderByAsc(condition, null, columns);
|
||||
}
|
||||
|
||||
<R> Children orderByAsc(boolean condition, String alias, List<SFunction<R, ?>> columns);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByAsc(SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderByAsc(true, column, columns);
|
||||
return orderByAsc(true, null, column, columns);
|
||||
}
|
||||
|
||||
default <R> Children orderByAsc(String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderByAsc(true, alias, column, columns);
|
||||
}
|
||||
|
||||
default <R> Children orderByAsc(boolean condition, String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderBy(condition, true, alias, column, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -318,33 +404,44 @@ public interface Func<Children> extends Serializable {
|
||||
* @return children
|
||||
*/
|
||||
default <R> Children orderByAsc(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderBy(condition, true, column, columns);
|
||||
return orderBy(condition, true, null, column, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default <R> Children orderByDesc(SFunction<R, ?> column) {
|
||||
return orderByDesc(true, column);
|
||||
return orderByDesc(true, (String) null, column);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByDesc(String alias, SFunction<R, ?> column) {
|
||||
return orderByDesc(true, alias, column);
|
||||
}
|
||||
|
||||
|
||||
default <R> Children orderByDesc(List<SFunction<R, ?>> columns) {
|
||||
return orderByDesc(true, columns);
|
||||
return orderByDesc(true, null, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
<R> Children orderByDesc(boolean condition, List<SFunction<R, ?>> columns);
|
||||
default <R> Children orderByDesc(String alias, List<SFunction<R, ?>> columns) {
|
||||
return orderByDesc(true, alias, columns);
|
||||
}
|
||||
|
||||
default <R> Children orderByDesc(boolean condition, List<SFunction<R, ?>> columns) {
|
||||
return orderByDesc(condition, null, columns);
|
||||
}
|
||||
|
||||
<R> Children orderByDesc(boolean condition, String alias, List<SFunction<R, ?>> columns);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R> Children orderByDesc(SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderByDesc(true, column, columns);
|
||||
return orderByDesc(true, null, column, columns);
|
||||
}
|
||||
|
||||
default <R> Children orderByDesc(String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderByDesc(true, alias, column, columns);
|
||||
}
|
||||
|
||||
default <R> Children orderByDesc(boolean condition, String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderBy(condition, false, alias, column, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -357,7 +454,11 @@ public interface Func<Children> extends Serializable {
|
||||
* @return children
|
||||
*/
|
||||
default <R> Children orderByDesc(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderBy(condition, false, column, columns);
|
||||
return orderBy(condition, false, null, column, columns);
|
||||
}
|
||||
|
||||
default <R> Children orderBy(boolean condition, boolean isAsc, SFunction<R, ?> column, SFunction<R, ?>... columns) {
|
||||
return orderBy(condition, isAsc, null, column, columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -370,11 +471,9 @@ public interface Func<Children> extends Serializable {
|
||||
* @param columns 字段数组
|
||||
* @return children
|
||||
*/
|
||||
<R> Children orderBy(boolean condition, boolean isAsc, SFunction<R, ?> column, SFunction<R, ?>... columns);
|
||||
<R> Children orderBy(boolean condition, boolean isAsc, String alias, SFunction<R, ?> column, SFunction<R, ?>... columns);
|
||||
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default Children having(String sqlHaving, Object... params) {
|
||||
return having(true, sqlHaving, params);
|
||||
}
|
||||
@ -391,9 +490,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,13 +14,36 @@ import java.io.Serializable;
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public interface OnCompare<Children> extends Serializable {
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
|
||||
default <R, S> Children eq(SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return eq(true, column, val);
|
||||
}
|
||||
|
||||
|
||||
default <R, S> Children eq(String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return eq(true, alias, column, val);
|
||||
}
|
||||
|
||||
default <R, S> Children eq(SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return eq(true, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children eq(String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return eq(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children eq(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return eq(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children eq(boolean condition, String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return eq(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children eq(boolean condition, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return eq(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
* 等于 =
|
||||
*
|
||||
@ -29,13 +52,34 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R, S> Children eq(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val);
|
||||
<R, S> Children eq(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R, S> Children ne(SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ne(true, column, val);
|
||||
return ne(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ne(String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ne(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ne(SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return ne(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ne(String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return ne(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ne(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ne(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ne(boolean condition, String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ne(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ne(boolean condition, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return ne(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -46,13 +90,34 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R, S> Children ne(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val);
|
||||
<R, S> Children ne(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R, S> Children gt(SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return gt(true, column, val);
|
||||
return gt(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children gt(String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return gt(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children gt(SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return gt(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children gt(String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return gt(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children gt(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return gt(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children gt(boolean condition, String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return gt(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children gt(boolean condition, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return gt(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -63,13 +128,34 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R, S> Children gt(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val);
|
||||
<R, S> Children gt(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R, S> Children ge(SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ge(true, column, val);
|
||||
return ge(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ge(String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ge(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ge(SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return ge(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ge(String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return ge(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ge(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ge(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ge(boolean condition, String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return ge(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children ge(boolean condition, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return ge(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -80,13 +166,34 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R, S> Children ge(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val);
|
||||
<R, S> Children ge(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R, S> Children lt(SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return lt(true, column, val);
|
||||
return lt(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children lt(String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return lt(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children lt(SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return lt(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children lt(String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return lt(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children lt(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return lt(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children lt(boolean condition, String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return lt(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children lt(boolean condition, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return lt(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -97,13 +204,34 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R, S> Children lt(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val);
|
||||
<R, S> Children lt(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val);
|
||||
|
||||
/**
|
||||
* ignore
|
||||
*/
|
||||
default <R, S> Children le(SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return le(true, column, val);
|
||||
return le(true, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children le(String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return le(true, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children le(SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return le(true, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children le(String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return le(true, alias, column, rightAlias, val);
|
||||
}
|
||||
|
||||
default <R, S> Children le(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return le(condition, null, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children le(boolean condition, String alias, SFunction<R, ?> column, SFunction<S, ?> val) {
|
||||
return le(condition, alias, column, null, val);
|
||||
}
|
||||
|
||||
default <R, S> Children le(boolean condition, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val) {
|
||||
return le(condition, null, column, rightAlias, val);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,5 +242,5 @@ public interface OnCompare<Children> extends Serializable {
|
||||
* @param val 值
|
||||
* @return children
|
||||
*/
|
||||
<R, S> Children le(boolean condition, SFunction<R, ?> column, SFunction<S, ?> val);
|
||||
<R, S> Children le(boolean condition, String alias, SFunction<R, ?> column, String rightAlias, SFunction<S, ?> val);
|
||||
}
|
||||
|
@ -25,6 +25,18 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.LEFT_JOIN, clazz, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join
|
||||
*
|
||||
* @param clazz 关联的实体类
|
||||
* @param left 条件
|
||||
* @param rightAlias 条件字段别名
|
||||
* @param right 条件
|
||||
*/
|
||||
default <T, X> Children leftJoin(Class<T> clazz, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(Constant.LEFT_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join 多条件
|
||||
* <p>
|
||||
@ -71,6 +83,18 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.LEFT_JOIN, clazz, alias, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join
|
||||
*
|
||||
* @param clazz 关联的实体类
|
||||
* @param rightAlias 条件字段别名
|
||||
* @param left 条件
|
||||
* @param right 条件
|
||||
*/
|
||||
default <T, X> Children leftJoin(Class<T> clazz, String alias, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(Constant.LEFT_JOIN, clazz, alias, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* left join 多条件
|
||||
* <p>
|
||||
@ -111,6 +135,14 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
*/
|
||||
default <T, X> Children rightJoin(Class<T> clazz, SFunction<T, ?> left, SFunction<X, ?> right) {
|
||||
return join(Constant.RIGHT_JOIN, clazz, left, right);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default <T, X> Children rightJoin(Class<T> clazz, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(Constant.RIGHT_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -137,8 +169,8 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default <T, X> Children rightJoin(Class<T> clazz, String alias, SFunction<T, ?> left, SFunction<X, ?> right) {
|
||||
return join(Constant.RIGHT_JOIN, clazz, alias, left, right);
|
||||
default <T, X> Children rightJoin(Class<T> clazz, String alias, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(Constant.RIGHT_JOIN, clazz, alias, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -167,7 +199,14 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default <T, X> Children innerJoin(Class<T> clazz, SFunction<T, ?> left, SFunction<X, ?> right) {
|
||||
return join(Constant.INNER_JOIN, clazz, on -> on.eq(left, right));
|
||||
return join(Constant.INNER_JOIN, clazz, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default <T, X> Children innerJoin(Class<T> clazz, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(Constant.INNER_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -227,6 +266,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.FULL_JOIN, clazz, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default <T, X> Children fullJoin(Class<T> clazz, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(Constant.FULL_JOIN, clazz, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -255,6 +301,13 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(Constant.FULL_JOIN, clazz, alias, left, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
default <T, X> Children fullJoin(Class<T> clazz, String alias, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(Constant.FULL_JOIN, clazz, alias, left, rightAlias, right);
|
||||
}
|
||||
|
||||
/**
|
||||
* ignore 参考 left join
|
||||
*/
|
||||
@ -291,6 +344,20 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(keyWord, clazz, on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* <p>
|
||||
* 查询基类 可以直接调用此方法实现以上所有功能
|
||||
*
|
||||
* @param keyWord 连表关键字
|
||||
* @param clazz 连表实体类
|
||||
* @param left 关联条件
|
||||
* @param right 扩展 用于关联表的 select 和 where
|
||||
*/
|
||||
default <T, X> Children join(String keyWord, Class<T> clazz, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(keyWord, clazz, on -> on.eq(left, rightAlias,right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* <p>
|
||||
@ -332,6 +399,21 @@ public interface QueryJoin<Children, Entity> extends MPJBaseJoin<Entity>, String
|
||||
return join(keyWord, clazz, alias, on -> on.eq(left, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* 调用此方法 keyword 前后需要带空格 比如 " LEFT JOIN " " RIGHT JOIN "
|
||||
* <p>
|
||||
* 查询基类 可以直接调用此方法实现以上所有功能
|
||||
*
|
||||
* @param keyWord 连表关键字
|
||||
* @param clazz 连表实体类
|
||||
* @param left 关联条件
|
||||
* @param right 扩展 用于关联表的 select 和 where
|
||||
*/
|
||||
default <T, X> Children join(String keyWord, Class<T> clazz, String alias, SFunction<T, ?> left, String rightAlias, SFunction<X, ?> right) {
|
||||
return join(keyWord, clazz, alias, on -> on.eq(left, rightAlias, right));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义连表关键词
|
||||
* <p>
|
||||
|
@ -0,0 +1,87 @@
|
||||
package com.github.yulichang.test.join.m;
|
||||
|
||||
import com.github.yulichang.test.join.entity.AddressDO;
|
||||
import com.github.yulichang.test.join.entity.AreaDO;
|
||||
import com.github.yulichang.test.join.entity.UserDO;
|
||||
import com.github.yulichang.test.join.mapper.UserMapper;
|
||||
import com.github.yulichang.test.util.Reset;
|
||||
import com.github.yulichang.test.util.ThreadLocalUtils;
|
||||
import com.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
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;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootTest
|
||||
public class TableAliasTest {
|
||||
@Autowired
|
||||
private UserMapper userMapper;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
Reset.reset();
|
||||
}
|
||||
|
||||
@Test
|
||||
void 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");
|
||||
MPJLambdaWrapper<UserDO> wrapper = JoinWrappers.lambda(UserDO.class)
|
||||
.selectAll(UserDO.class)
|
||||
.leftJoin(AddressDO.class, "addr1", AddressDO::getId, UserDO::getAddressId)
|
||||
.leftJoin(AddressDO.class, "addr2", AddressDO::getId, UserDO::getAddressId2)
|
||||
.leftJoin(AreaDO.class, "area1", AreaDO::getId, "addr1", AddressDO::getAreaId)
|
||||
.groupBy(UserDO::getId);
|
||||
|
||||
List<UserDO> dos = userMapper.selectJoinList(UserDO.class, wrapper);
|
||||
dos.forEach(System.out::println);
|
||||
}
|
||||
|
||||
@Test
|
||||
void 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");
|
||||
MPJLambdaWrapper<UserDO> wrapper = JoinWrappers.lambda(UserDO.class)
|
||||
.selectAll(UserDO.class)
|
||||
.leftJoin(AddressDO.class, "addr1", AddressDO::getId, UserDO::getAddressId)
|
||||
.leftJoin(AddressDO.class, "addr2", AddressDO::getId, UserDO::getAddressId2)
|
||||
.leftJoin(AreaDO.class, "area1", AreaDO::getId, "addr2", AddressDO::getAreaId)
|
||||
.groupBy(UserDO::getId)
|
||||
.orderByDesc("addr1", AddressDO::getId);
|
||||
|
||||
List<UserDO> dos = userMapper.selectJoinList(UserDO.class, wrapper);
|
||||
dos.forEach(System.out::println);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void 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 = ?)");
|
||||
MPJLambdaWrapper<UserDO> wrapper = JoinWrappers.lambda(UserDO.class)
|
||||
.selectAll(UserDO.class)
|
||||
.leftJoin(AddressDO.class, "addr1", AddressDO::getId, UserDO::getAddressId)
|
||||
.leftJoin(AddressDO.class, "addr2", AddressDO::getId, UserDO::getAddressId2)
|
||||
.leftJoin(AreaDO.class, "area1", AreaDO::getId, "addr2", AddressDO::getAreaId)
|
||||
.eq("addr1", AddressDO::getId, 1)
|
||||
.eq("addr2", AddressDO::getId, 2)
|
||||
.eq("addr1", AddressDO::getId, 3);
|
||||
|
||||
List<UserDO> dos = userMapper.selectJoinList(UserDO.class, wrapper);
|
||||
dos.forEach(System.out::println);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user