优化idea代码警告

This commit is contained in:
yulichang 2023-12-10 05:45:42 +08:00
parent 8170305daf
commit 25b3df16cf
4 changed files with 197 additions and 46 deletions

View File

@ -43,6 +43,7 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
/** /**
* 主表别名 * 主表别名
*/ */
@Getter
protected String alias = ConfigProperties.tableAlias; protected String alias = ConfigProperties.tableAlias;
/** /**
* 副表别名 * 副表别名
@ -222,8 +223,8 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
} }
@Override @Override
protected final String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, Object... columns) { protected final String columnsToString(Integer index, PrefixEnum prefixEnum, KProperty<?>... columns) {
return Arrays.stream(columns).map(i -> columnToString(index, (KProperty<?>) i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA)); 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, KProperty<?> column, boolean isJoin, PrefixEnum prefixEnum) {
@ -337,6 +338,7 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
if (StringUtils.isBlank(wrapper.from.getStringValue())) { if (StringUtils.isBlank(wrapper.from.getStringValue())) {
if (this.subLogicSql && this.logicDelType == LogicDelTypeEnum.ON) { if (this.subLogicSql && this.logicDelType == LogicDelTypeEnum.ON) {
TableInfo tableInfo = TableHelper.get(wrapper.getJoinClass()); TableInfo tableInfo = TableHelper.get(wrapper.getJoinClass());
Asserts.hasTable(tableInfo, wrapper.getJoinClass());
if (ConfigProperties.tableInfoAdapter.mpjHasLogic(tableInfo)) { if (ConfigProperties.tableInfoAdapter.mpjHasLogic(tableInfo)) {
wrapper.appendSqlSegments(APPLY, () -> LogicInfoUtils.getLogicInfoNoAnd( wrapper.appendSqlSegments(APPLY, () -> LogicInfoUtils.getLogicInfoNoAnd(
wrapper.getIndex(), wrapper.getJoinClass(), wrapper.isHasAlias(), wrapper.getAlias() wrapper.getIndex(), wrapper.getJoinClass(), wrapper.isHasAlias(), wrapper.getAlias()
@ -364,10 +366,6 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
return from.getStringValue(); return from.getStringValue();
} }
public String getAlias() {
return alias;
}
/** /**
* 内部调用, 不建议使用 * 内部调用, 不建议使用
*/ */

View File

@ -42,7 +42,7 @@ import static java.util.stream.Collectors.joining;
* *
* @author yulichang * @author yulichang
*/ */
@SuppressWarnings("ALL") @SuppressWarnings({"unused", "unchecked", "DuplicatedCode"})
public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T, Children>> extends Wrapper<T> public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T, Children>> extends Wrapper<T>
implements Compare<Children>, Nested<Children, Children>, Join<Children>, Func<Children>, OnCompare<Children>, implements Compare<Children>, Nested<Children, Children>, Join<Children>, Func<Children>, OnCompare<Children>,
CompareStr<Children, String>, FuncStr<Children, String> { CompareStr<Children, String>, FuncStr<Children, String> {
@ -61,6 +61,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
*/ */
@Getter @Getter
protected AtomicInteger paramNameSeq; protected AtomicInteger paramNameSeq;
@Getter
protected Map<String, Object> paramNameValuePairs; protected Map<String, Object> paramNameValuePairs;
/** /**
* 其他 * 其他
@ -239,13 +240,13 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
@Override @Override
public Children between(boolean condition, KProperty<?> column, Object val1, Object val2) { public Children between(boolean condition, KProperty<?> column, Object val1, Object val2) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), BETWEEN, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), BETWEEN,
() -> formatParam(null, val1), AND, () -> formatParam(null, val2))); () -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
} }
@Override @Override
public Children notBetween(boolean condition, KProperty<?> column, Object val1, Object val2) { public Children notBetween(boolean condition, KProperty<?> column, Object val1, Object val2) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_BETWEEN, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_BETWEEN,
() -> formatParam(null, val1), AND, () -> formatParam(null, val2))); () -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
} }
@ -317,68 +318,68 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
@Override @Override
public Children isNull(boolean condition, KProperty<?> column) { public Children isNull(boolean condition, KProperty<?> column) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IS_NULL)); return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IS_NULL));
} }
@Override @Override
public Children isNotNull(boolean condition, KProperty<?> column) { public Children isNotNull(boolean condition, KProperty<?> column) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IS_NOT_NULL)); return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IS_NOT_NULL));
} }
@Override @Override
public Children in(boolean condition, KProperty<?> column, Collection<?> coll) { public Children in(boolean condition, KProperty<?> column, Collection<?> coll) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, inExpression(coll))); return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IN, inExpression(coll)));
} }
@Override @Override
public Children in(boolean condition, KProperty<?> column, Object... values) { public Children in(boolean condition, KProperty<?> column, Object... values) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, inExpression(values))); return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IN, inExpression(values)));
} }
@Override @Override
public Children notIn(boolean condition, KProperty<?> column, Collection<?> coll) { public Children notIn(boolean condition, KProperty<?> column, Collection<?> coll) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, inExpression(coll))); return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_IN, inExpression(coll)));
} }
@Override @Override
public Children notIn(boolean condition, KProperty<?> column, Object... values) { public Children notIn(boolean condition, KProperty<?> column, Object... values) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, inExpression(values))); return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_IN, inExpression(values)));
} }
@Override @Override
public Children inSql(boolean condition, KProperty<?> column, String inValue) { public Children inSql(boolean condition, KProperty<?> column, String inValue) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), IN, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), IN,
() -> String.format("(%s)", inValue))); () -> String.format("(%s)", inValue)));
} }
@Override @Override
public Children notInSql(boolean condition, KProperty<?> column, String inValue) { public Children notInSql(boolean condition, KProperty<?> column, String inValue) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), NOT_IN, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), NOT_IN,
() -> String.format("(%s)", inValue))); () -> String.format("(%s)", inValue)));
} }
@Override @Override
public Children gtSql(boolean condition, KProperty<?> column, String inValue) { public Children gtSql(boolean condition, KProperty<?> column, String inValue) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), GT, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), GT,
() -> String.format("(%s)", inValue))); () -> String.format("(%s)", inValue)));
} }
@Override @Override
public Children geSql(boolean condition, KProperty<?> column, String inValue) { public Children geSql(boolean condition, KProperty<?> column, String inValue) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), GE, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), GE,
() -> String.format("(%s)", inValue))); () -> String.format("(%s)", inValue)));
} }
@Override @Override
public Children ltSql(boolean condition, KProperty<?> column, String inValue) { public Children ltSql(boolean condition, KProperty<?> column, String inValue) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), LT, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), LT,
() -> String.format("(%s)", inValue))); () -> String.format("(%s)", inValue)));
} }
@Override @Override
public Children leSql(boolean condition, KProperty<?> column, String inValue) { public Children leSql(boolean condition, KProperty<?> column, String inValue) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), LE, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), LE,
() -> String.format("(%s)", inValue))); () -> String.format("(%s)", inValue)));
} }
@ -386,8 +387,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
public Children groupBy(boolean condition, List<KProperty<?>> columns) { public Children groupBy(boolean condition, List<KProperty<?>> columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
if (CollectionUtils.isNotEmpty(columns)) { if (CollectionUtils.isNotEmpty(columns)) {
String one = (StringPool.COMMA + columnsToString(index, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns)); final String finalOne = columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns);
final String finalOne = one;
appendSqlSegments(GROUP_BY, () -> finalOne); appendSqlSegments(GROUP_BY, () -> finalOne);
} }
}); });
@ -398,7 +398,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
String one = columnToString(index, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST); String one = columnToString(index, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
if (ArrayUtils.isNotEmpty(columns)) { if (ArrayUtils.isNotEmpty(columns)) {
one += (StringPool.COMMA + columnsToString(index, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns)); one += columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns);
} }
final String finalOne = one; final String finalOne = one;
appendSqlSegments(GROUP_BY, () -> finalOne); appendSqlSegments(GROUP_BY, () -> finalOne);
@ -408,10 +408,9 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
@Override @Override
public Children orderByAsc(boolean condition, List<KProperty<?>> columns) { public Children orderByAsc(boolean condition, List<KProperty<?>> columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
final SqlKeyword mode = ASC;
if (CollectionUtils.isNotEmpty(columns)) { if (CollectionUtils.isNotEmpty(columns)) {
columns.forEach(c -> appendSqlSegments(ORDER_BY, columns.forEach(c -> appendSqlSegments(ORDER_BY,
columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode)); columnToSqlSegment(index, columnSqlInjectFilter(c)), ASC));
} }
}); });
} }
@ -419,10 +418,9 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
@Override @Override
public Children orderByDesc(boolean condition, List<KProperty<?>> columns) { public Children orderByDesc(boolean condition, List<KProperty<?>> columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
final SqlKeyword mode = DESC;
if (CollectionUtils.isNotEmpty(columns)) { if (CollectionUtils.isNotEmpty(columns)) {
columns.forEach(c -> appendSqlSegments(ORDER_BY, columns.forEach(c -> appendSqlSegments(ORDER_BY,
columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode)); columnToSqlSegment(index, columnSqlInjectFilter(c)), DESC));
} }
}); });
} }
@ -431,10 +429,10 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
public Children orderBy(boolean condition, boolean isAsc, KProperty<?> column, KProperty<?>... columns) { public Children orderBy(boolean condition, boolean isAsc, KProperty<?> column, KProperty<?>... columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
final SqlKeyword mode = isAsc ? ASC : DESC; final SqlKeyword mode = isAsc ? ASC : DESC;
appendSqlSegments(ORDER_BY, columnToSqlSegment(index, column, false), mode); appendSqlSegments(ORDER_BY, columnToSqlSegment(index, column), mode);
if (ArrayUtils.isNotEmpty(columns)) { if (ArrayUtils.isNotEmpty(columns)) {
Arrays.stream(columns).forEach(c -> appendSqlSegments(ORDER_BY, Arrays.stream(columns).forEach(c -> appendSqlSegments(ORDER_BY,
columnToSqlSegment(index, columnSqlInjectFilter(c), false), mode)); columnToSqlSegment(index, columnSqlInjectFilter(c)), mode));
} }
}); });
} }
@ -443,7 +441,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
* 字段 SQL 注入过滤处理子类重写实现过滤逻辑 * 字段 SQL 注入过滤处理子类重写实现过滤逻辑
* *
* @param column 字段内容 * @param column 字段内容
* @return * @return Children
*/ */
protected KProperty<?> columnSqlInjectFilter(KProperty<?> column) { protected KProperty<?> columnSqlInjectFilter(KProperty<?> column) {
return column; return column;
@ -481,7 +479,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
* <p>拼接 LIKE 以及 </p> * <p>拼接 LIKE 以及 </p>
*/ */
protected Children likeValue(boolean condition, SqlKeyword keyword, KProperty<?> column, Object val, SqlLike sqlLike) { protected Children likeValue(boolean condition, SqlKeyword keyword, KProperty<?> column, Object val, SqlLike sqlLike) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), keyword, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), keyword,
() -> formatParam(null, SqlUtils.concatLike(val, sqlLike)))); () -> formatParam(null, SqlUtils.concatLike(val, sqlLike))));
} }
@ -499,14 +497,14 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
* @param val 条件值 * @param val 条件值
*/ */
protected Children addCondition(boolean condition, KProperty<?> column, SqlKeyword sqlKeyword, Object val) { protected Children addCondition(boolean condition, KProperty<?> column, SqlKeyword sqlKeyword, Object val) {
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), sqlKeyword, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), sqlKeyword,
() -> formatParam(null, val))); () -> formatParam(null, val)));
} }
protected <X, S> Children addCondition(boolean condition, KProperty<?> column, SqlKeyword sqlKeyword, KProperty<?> val) { protected <X, S> Children addCondition(boolean condition, KProperty<?> column, SqlKeyword sqlKeyword, KProperty<?> val) {
Class<X> c = (Class<X>) KtUtils.ref(column); Class<X> c = (Class<X>) KtUtils.ref(column);
Class<S> v = (Class<S>) KtUtils.ref(val); Class<S> v = (Class<S>) KtUtils.ref(val);
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), sqlKeyword, return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), sqlKeyword,
isNo ? isNo ?
columnToSqlSegmentS(index, val, v == c && v == joinClass) : columnToSqlSegmentS(index, val, v == c && v == joinClass) :
columnToSqlSegmentS(index, val, v == c) columnToSqlSegmentS(index, val, v == c)
@ -550,6 +548,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
* @param params 参数 * @param params 参数
* @return sql片段 * @return sql片段
*/ */
@SuppressWarnings("SameParameterValue")
protected final String formatSqlMaybeWithParam(String sqlStr, String mapping, Object... params) { protected final String formatSqlMaybeWithParam(String sqlStr, String mapping, Object... params) {
if (StringUtils.isBlank(sqlStr)) { if (StringUtils.isBlank(sqlStr)) {
// todo 何时会这样? // todo 何时会这样?
@ -671,10 +670,6 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
return expression; return expression;
} }
public Map<String, Object> getParamNameValuePairs() {
return paramNameValuePairs;
}
public String getParamAlias() { public String getParamAlias() {
return paramAlias.getStringValue() == null ? Constants.WRAPPER : paramAlias.getStringValue(); return paramAlias.getStringValue() == null ? Constants.WRAPPER : paramAlias.getStringValue();
} }
@ -685,6 +680,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
* @param paramAlias 参数别名 * @param paramAlias 参数别名
* @return Children * @return Children
*/ */
@SuppressWarnings("UnusedReturnValue")
public Children setParamAlias(String paramAlias) { public Children setParamAlias(String paramAlias) {
Assert.notEmpty(paramAlias, "paramAlias can not be empty!"); Assert.notEmpty(paramAlias, "paramAlias can not be empty!");
this.paramAlias.setStringValue(paramAlias); this.paramAlias.setStringValue(paramAlias);
@ -694,8 +690,8 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
/** /**
* 获取 columnName * 获取 columnName
*/ */
protected final ISqlSegment columnToSqlSegment(Integer index, KProperty<?> column, boolean isJoin) { protected final ISqlSegment columnToSqlSegment(Integer index, KProperty<?> column) {
return () -> columnToString(index, column, isJoin, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST); return () -> columnToString(index, 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, KProperty<?> column, boolean isJoin) {
@ -740,12 +736,16 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
* *
* @param columns 多字段 * @param columns 多字段
*/ */
protected String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, Object... columns) { protected String columnsToString(Integer index, PrefixEnum prefixEnum, KProperty<?>... columns) {
return Arrays.stream(columns).map(i -> this.columnToString(index, i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA)); return Arrays.stream(columns).map(i -> this.columnToString(index, 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));
}
@SuppressWarnings("MethodDoesntCallSuperMethod")
@Override @Override
@SuppressWarnings("all")
public Children clone() { public Children clone() {
return SerializationUtils.clone(typedThis); return SerializationUtils.clone(typedThis);
} }

View File

@ -400,14 +400,32 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
public <R> Children groupBy(boolean condition, String alias, List<SFunction<R, ?>> columns) { public <R> Children groupBy(boolean condition, String alias, List<SFunction<R, ?>> columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
if (CollectionUtils.isNotEmpty(columns)) { if (CollectionUtils.isNotEmpty(columns)) {
final String finalOne = (StringPool.COMMA + columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns)); final String finalOne = columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns);
appendSqlSegments(GROUP_BY, () -> finalOne); appendSqlSegments(GROUP_BY, () -> finalOne);
} }
}); });
} }
@SafeVarargs
@Override @Override
@SafeVarargs
public final <R> Children groupBy(SFunction<R, ?> column, SFunction<R, ?>... columns) {
return groupBy(true, null, column, columns);
}
@Override
@SafeVarargs
public final <R> Children groupBy(String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return groupBy(true, alias, column, columns);
}
@Override
@SafeVarargs
public final <R> Children groupBy(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return groupBy(condition, null, column, columns);
}
@Override
@SafeVarargs
public final <X> Children groupBy(boolean condition, String alias, SFunction<X, ?> column, SFunction<X, ?>... columns) { public final <X> Children groupBy(boolean condition, String alias, SFunction<X, ?> column, SFunction<X, ?>... columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
String one = columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST); String one = columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
@ -429,6 +447,39 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
}); });
} }
@Override
@SafeVarargs
public final <R> Children orderByAsc(SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderByAsc(true, null, column, columns);
}
@Override
@SafeVarargs
public final <R> Children orderByAsc(String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderByAsc(true, alias, column, columns);
}
@Override
@SafeVarargs
public final <R> Children orderByAsc(boolean condition, String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderBy(condition, true, alias, column, columns);
}
/**
* 排序ORDER BY 字段, ... ASC
* <p>: orderByAsc("id", "name")</p>
*
* @param condition 执行条件
* @param column 单个字段
* @param columns 字段数组
* @return children
*/
@Override
@SafeVarargs
public final <R> Children orderByAsc(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderBy(condition, true, null, column, columns);
}
@Override @Override
public <R> Children orderByDesc(boolean condition, String alias, List<SFunction<R, ?>> columns) { public <R> Children orderByDesc(boolean condition, String alias, List<SFunction<R, ?>> columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
@ -440,7 +491,41 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
} }
@Override @Override
public <X> Children orderBy(boolean condition, boolean isAsc, String alias, SFunction<X, ?> column, SFunction<X, ?>... columns) { @SafeVarargs
public final <R> Children orderByDesc(SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderByDesc(true, null, column, columns);
}
@Override
@SafeVarargs
public final <R> Children orderByDesc(String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderByDesc(true, alias, column, columns);
}
@Override
@SafeVarargs
public final <R> Children orderByDesc(boolean condition, String alias, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderBy(condition, false, alias, column, columns);
}
/**
* 排序ORDER BY 字段, ... DESC
* <p>: orderByDesc("id", "name")</p>
*
* @param condition 执行条件
* @param column 单个字段
* @param columns 字段数组
* @return children
*/
@Override
@SafeVarargs
public final <R> Children orderByDesc(boolean condition, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderBy(condition, false, null, column, columns);
}
@Override
@SafeVarargs
public final <X> Children orderBy(boolean condition, boolean isAsc, String alias, SFunction<X, ?> column, SFunction<X, ?>... columns) {
return maybeDo(condition, () -> { return maybeDo(condition, () -> {
final SqlKeyword mode = isAsc ? ASC : DESC; final SqlKeyword mode = isAsc ? ASC : DESC;
appendSqlSegments(ORDER_BY, columnToSqlSegment(index, alias, column), mode); appendSqlSegments(ORDER_BY, columnToSqlSegment(index, alias, column), mode);
@ -451,6 +536,12 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
}); });
} }
@Override
@SafeVarargs
public final <R> Children orderBy(boolean condition, boolean isAsc, SFunction<R, ?> column, SFunction<R, ?>... columns) {
return orderBy(condition, isAsc, null, column, columns);
}
/** /**
* 字段 SQL 注入过滤处理子类重写实现过滤逻辑 * 字段 SQL 注入过滤处理子类重写实现过滤逻辑
* *
@ -751,6 +842,10 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
*/ */
abstract <X> String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, X... columns); abstract <X> String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, X... columns);
public <X> String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, List<X> columns) {
return columns.stream().map(i -> columnToString(index, alias, (SFunction<?, ?>) i, false, prefixEnum)).collect(joining(StringPool.COMMA));
}
@Override @Override
@SuppressWarnings("MethodDoesntCallSuperMethod") @SuppressWarnings("MethodDoesntCallSuperMethod")
public Children clone() { public Children clone() {

View File

@ -0,0 +1,58 @@
package com.github.yulichang.test.join.m;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.test.join.entity.UserDO;
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.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.List;
@SpringBootTest
public class OrderByTest {
@BeforeEach
void setUp() {
Reset.reset();
}
@Test
void 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");
List<SFunction<UserDO, ?>> columList = Arrays.asList(UserDO::getId, UserDO::getName, UserDO::getPid);
MPJLambdaWrapper<UserDO> wrapper = JoinWrappers.lambda(UserDO.class)
.selectAll(UserDO.class)
.eq(UserDO::getId, 1)
.orderByAsc(columList);
List<UserDO> list = wrapper.list();
list.forEach(System.out::println);
}
@Test
void 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");
List<SFunction<UserDO, ?>> columList = Arrays.asList(UserDO::getId, UserDO::getName, UserDO::getPid);
MPJLambdaWrapper<UserDO> wrapper = JoinWrappers.lambda(UserDO.class)
.selectAll(UserDO.class)
.eq(UserDO::getId, 1)
.groupBy(columList);
// .groupBy(UserDO::getId, UserDO::getName, UserDO::getPid);
// .orderByAsc(columList);
List<UserDO> list = wrapper.list();
list.forEach(System.out::println);
}
}