优化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;
/**
* 副表别名
@ -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;
}
/**
* 内部调用, 不建议使用
*/

View File

@ -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);
}

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) {
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() {

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);
}
}