mirror of
https://gitee.com/best_handsome/mybatis-plus-join
synced 2025-07-11 00:02:22 +08:00
优化idea代码警告
This commit is contained in:
parent
8170305daf
commit
25b3df16cf
@ -43,6 +43,7 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
|
||||
/**
|
||||
* 主表别名
|
||||
*/
|
||||
@Getter
|
||||
protected String alias = ConfigProperties.tableAlias;
|
||||
/**
|
||||
* 副表别名
|
||||
@ -222,8 +223,8 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, Object... columns) {
|
||||
return Arrays.stream(columns).map(i -> columnToString(index, (KProperty<?>) i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
protected final String columnsToString(Integer index, PrefixEnum prefixEnum, KProperty<?>... columns) {
|
||||
return Arrays.stream(columns).map(i -> columnToString(index, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
protected String columnToString(Integer index, KProperty<?> column, boolean isJoin, PrefixEnum prefixEnum) {
|
||||
@ -337,6 +338,7 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
|
||||
if (StringUtils.isBlank(wrapper.from.getStringValue())) {
|
||||
if (this.subLogicSql && this.logicDelType == LogicDelTypeEnum.ON) {
|
||||
TableInfo tableInfo = TableHelper.get(wrapper.getJoinClass());
|
||||
Asserts.hasTable(tableInfo, wrapper.getJoinClass());
|
||||
if (ConfigProperties.tableInfoAdapter.mpjHasLogic(tableInfo)) {
|
||||
wrapper.appendSqlSegments(APPLY, () -> LogicInfoUtils.getLogicInfoNoAnd(
|
||||
wrapper.getIndex(), wrapper.getJoinClass(), wrapper.isHasAlias(), wrapper.getAlias()
|
||||
@ -364,10 +366,6 @@ public abstract class KtAbstractLambdaWrapper<T, Children extends KtAbstractLamb
|
||||
return from.getStringValue();
|
||||
}
|
||||
|
||||
public String getAlias() {
|
||||
return alias;
|
||||
}
|
||||
|
||||
/**
|
||||
* 内部调用, 不建议使用
|
||||
*/
|
||||
|
@ -42,7 +42,7 @@ import static java.util.stream.Collectors.joining;
|
||||
*
|
||||
* @author yulichang
|
||||
*/
|
||||
@SuppressWarnings("ALL")
|
||||
@SuppressWarnings({"unused", "unchecked", "DuplicatedCode"})
|
||||
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>,
|
||||
CompareStr<Children, String>, FuncStr<Children, String> {
|
||||
@ -61,6 +61,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
*/
|
||||
@Getter
|
||||
protected AtomicInteger paramNameSeq;
|
||||
@Getter
|
||||
protected Map<String, Object> paramNameValuePairs;
|
||||
/**
|
||||
* 其他
|
||||
@ -239,13 +240,13 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
|
||||
@Override
|
||||
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)));
|
||||
}
|
||||
|
||||
@Override
|
||||
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)));
|
||||
}
|
||||
|
||||
@ -317,68 +318,68 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
|
||||
@Override
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
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)));
|
||||
}
|
||||
|
||||
@Override
|
||||
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)));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
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)));
|
||||
}
|
||||
|
||||
@Override
|
||||
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)));
|
||||
}
|
||||
|
||||
@Override
|
||||
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)));
|
||||
}
|
||||
|
||||
@Override
|
||||
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)));
|
||||
}
|
||||
|
||||
@ -386,8 +387,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
public Children groupBy(boolean condition, List<KProperty<?>> 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 = columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns);
|
||||
appendSqlSegments(GROUP_BY, () -> finalOne);
|
||||
}
|
||||
});
|
||||
@ -398,7 +398,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
return maybeDo(condition, () -> {
|
||||
String one = columnToString(index, column, false, isNo ? 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 += columnsToString(index, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, columns);
|
||||
}
|
||||
final String finalOne = one;
|
||||
appendSqlSegments(GROUP_BY, () -> finalOne);
|
||||
@ -408,10 +408,9 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
@Override
|
||||
public Children orderByAsc(boolean condition, List<KProperty<?>> 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, columnSqlInjectFilter(c)), ASC));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -419,10 +418,9 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
@Override
|
||||
public Children orderByDesc(boolean condition, List<KProperty<?>> 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, 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) {
|
||||
return maybeDo(condition, () -> {
|
||||
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)) {
|
||||
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 注入过滤处理,子类重写实现过滤逻辑
|
||||
*
|
||||
* @param column 字段内容
|
||||
* @return
|
||||
* @return Children
|
||||
*/
|
||||
protected KProperty<?> columnSqlInjectFilter(KProperty<?> column) {
|
||||
return column;
|
||||
@ -481,7 +479,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
* <p>拼接 LIKE 以及 值</p>
|
||||
*/
|
||||
protected Children likeValue(boolean condition, SqlKeyword keyword, KProperty<?> column, Object val, SqlLike sqlLike) {
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), keyword,
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), keyword,
|
||||
() -> formatParam(null, SqlUtils.concatLike(val, sqlLike))));
|
||||
}
|
||||
|
||||
@ -499,14 +497,14 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
* @param 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)));
|
||||
}
|
||||
|
||||
protected <X, S> Children addCondition(boolean condition, KProperty<?> column, SqlKeyword sqlKeyword, KProperty<?> val) {
|
||||
Class<X> c = (Class<X>) KtUtils.ref(column);
|
||||
Class<S> v = (Class<S>) KtUtils.ref(val);
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column, false), sqlKeyword,
|
||||
return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, column), sqlKeyword,
|
||||
isNo ?
|
||||
columnToSqlSegmentS(index, val, v == c && v == joinClass) :
|
||||
columnToSqlSegmentS(index, val, v == c)
|
||||
@ -550,6 +548,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
* @param params 参数
|
||||
* @return sql片段
|
||||
*/
|
||||
@SuppressWarnings("SameParameterValue")
|
||||
protected final String formatSqlMaybeWithParam(String sqlStr, String mapping, Object... params) {
|
||||
if (StringUtils.isBlank(sqlStr)) {
|
||||
// todo 何时会这样?
|
||||
@ -671,10 +670,6 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
return expression;
|
||||
}
|
||||
|
||||
public Map<String, Object> getParamNameValuePairs() {
|
||||
return paramNameValuePairs;
|
||||
}
|
||||
|
||||
public String getParamAlias() {
|
||||
return paramAlias.getStringValue() == null ? Constants.WRAPPER : paramAlias.getStringValue();
|
||||
}
|
||||
@ -685,6 +680,7 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
* @param paramAlias 参数别名
|
||||
* @return Children
|
||||
*/
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
public Children setParamAlias(String paramAlias) {
|
||||
Assert.notEmpty(paramAlias, "paramAlias can not be empty!");
|
||||
this.paramAlias.setStringValue(paramAlias);
|
||||
@ -694,8 +690,8 @@ public abstract class KtAbstractWrapper<T, Children extends KtAbstractWrapper<T,
|
||||
/**
|
||||
* 获取 columnName
|
||||
*/
|
||||
protected final ISqlSegment columnToSqlSegment(Integer index, KProperty<?> column, boolean isJoin) {
|
||||
return () -> columnToString(index, column, isJoin, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
protected final ISqlSegment columnToSqlSegment(Integer index, KProperty<?> column) {
|
||||
return () -> columnToString(index, column, false, isNo ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
|
||||
}
|
||||
|
||||
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 多字段
|
||||
*/
|
||||
protected String columnsToString(Integer index, boolean isJoin, PrefixEnum prefixEnum, Object... columns) {
|
||||
return Arrays.stream(columns).map(i -> this.columnToString(index, i, isJoin, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
protected String columnsToString(Integer index, PrefixEnum prefixEnum, KProperty<?>... columns) {
|
||||
return Arrays.stream(columns).map(i -> this.columnToString(index, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
protected String columnsToString(Integer index, PrefixEnum prefixEnum, List<KProperty<?>> columns) {
|
||||
return columns.stream().map(i -> this.columnToString(index, i, false, prefixEnum)).collect(joining(StringPool.COMMA));
|
||||
}
|
||||
|
||||
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public Children clone() {
|
||||
return SerializationUtils.clone(typedThis);
|
||||
}
|
||||
|
@ -400,14 +400,32 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
public <R> Children groupBy(boolean condition, String alias, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@SafeVarargs
|
||||
@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) {
|
||||
return maybeDo(condition, () -> {
|
||||
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
|
||||
public <R> Children orderByDesc(boolean condition, String alias, List<SFunction<R, ?>> columns) {
|
||||
return maybeDo(condition, () -> {
|
||||
@ -440,7 +491,41 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
}
|
||||
|
||||
@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, () -> {
|
||||
final SqlKeyword mode = isAsc ? ASC : DESC;
|
||||
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 注入过滤处理,子类重写实现过滤逻辑
|
||||
*
|
||||
@ -751,6 +842,10 @@ public abstract class MPJAbstractWrapper<T, Children extends MPJAbstractWrapper<
|
||||
*/
|
||||
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
|
||||
@SuppressWarnings("MethodDoesntCallSuperMethod")
|
||||
public Children clone() {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user