diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java
index 7df36fc..6253bfb 100644
--- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java
+++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractLambdaWrapper.java
@@ -217,18 +217,26 @@ public abstract class JoinAbstractLambdaWrapper String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum) {
- return columnToString(index, alias, (SFunction, ?>) column, isJoin, prefixEnum);
+ protected String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum, boolean orderBy) {
+ return columnToString(index, alias, (SFunction, ?>) column, isJoin, prefixEnum, orderBy);
}
@Override
@SafeVarargs
- protected final 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 final String columnsToString(Integer index, PrefixEnum prefixEnum, String alias,boolean orderBy, X... columns) {
+ return Arrays.stream(columns).map(i ->
+ columnToString(index, alias, (SFunction, ?>) i, false, prefixEnum, orderBy))
+ .collect(joining(StringPool.COMMA));
}
- protected String columnToString(Integer index, String alias, SFunction, ?> column, boolean isJoin, PrefixEnum prefixEnum) {
+ protected String columnToString(Integer index, String alias, SFunction, ?> column, boolean isJoin, PrefixEnum prefixEnum, boolean orderBy) {
Class> entityClass = LambdaUtils.getEntityClass(column);
+ if (orderBy) {
+ TableInfo info = TableHelper.get(entityClass);
+ if (Objects.isNull(info)) {
+ return LambdaUtils.getName(column);
+ }
+ }
return (alias == null ? getDefault(index, entityClass, isJoin, prefixEnum) : alias) + StringPool.DOT + getCache(column).getColumn();
}
diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java
index 8f27151..7e1ace6 100644
--- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java
+++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/wrapper/JoinAbstractWrapper.java
@@ -289,13 +289,13 @@ public abstract class JoinAbstractWrapper Children between(boolean condition, String alias, SFunction column, Object val1, Object val2) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), BETWEEN,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), BETWEEN,
() -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
}
@Override
public Children notBetween(boolean condition, String alias, SFunction column, Object val1, Object val2) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_BETWEEN,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), NOT_BETWEEN,
() -> formatParam(null, val1), AND, () -> formatParam(null, val2)));
}
@@ -374,74 +374,74 @@ public abstract class JoinAbstractWrapper Children isNull(boolean condition, String alias, SFunction column) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NULL));
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), IS_NULL));
}
@Override
public Children isNotNull(boolean condition, String alias, SFunction column) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IS_NOT_NULL));
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), IS_NOT_NULL));
}
@Override
public Children in(boolean condition, String alias, SFunction column, Collection> coll) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(coll)));
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), IN, inExpression(coll)));
}
@Override
public Children in(boolean condition, String alias, SFunction column, Object... values) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN, inExpression(values)));
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), IN, inExpression(values)));
}
@Override
public Children notIn(boolean condition, String alias, SFunction column, Collection> coll) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(coll)));
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), NOT_IN, inExpression(coll)));
}
@Override
public Children notIn(boolean condition, String alias, SFunction column, Object... values) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN, inExpression(values)));
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), NOT_IN, inExpression(values)));
}
@Override
public Children inSql(boolean condition, String alias, SFunction column, String inValue) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), IN,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), IN,
() -> String.format("(%s)", inValue)));
}
@Override
public Children notInSql(boolean condition, String alias, SFunction column, String inValue) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), NOT_IN,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), NOT_IN,
() -> String.format("(%s)", inValue)));
}
@Override
public Children gtSql(boolean condition, String alias, SFunction column, String inValue) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GT,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), GT,
() -> String.format("(%s)", inValue)));
}
@Override
public Children geSql(boolean condition, String alias, SFunction column, String inValue) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), GE,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), GE,
() -> String.format("(%s)", inValue)));
}
@Override
public Children ltSql(boolean condition, String alias, SFunction column, String inValue) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LT,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), LT,
() -> String.format("(%s)", inValue)));
}
@Override
public Children leSql(boolean condition, String alias, SFunction column, String inValue) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), LE,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), LE,
() -> String.format("(%s)", inValue)));
}
@Override
public Children eqSql(boolean condition, String alias, SFunction column, String inValue) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), EQ,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), EQ,
() -> String.format("(%s)", inValue)));
}
@@ -449,7 +449,7 @@ public abstract class JoinAbstractWrapper Children groupBy(boolean condition, String alias, List> columns) {
return maybeDo(condition, () -> {
if (CollectionUtils.isNotEmpty(columns)) {
- final String finalOne = columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns);
+ final String finalOne = columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, false, columns);
appendSqlSegments(GROUP_BY, () -> finalOne);
}
});
@@ -477,9 +477,9 @@ public abstract class JoinAbstractWrapper Children groupBy(boolean condition, String alias, SFunction column, SFunction... columns) {
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, false);
if (ArrayUtils.isNotEmpty(columns)) {
- one += (StringPool.COMMA + columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, columns));
+ one += (StringPool.COMMA + columnsToString(index, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, alias, false, columns));
}
final String finalOne = one;
appendSqlSegments(GROUP_BY, () -> finalOne);
@@ -491,7 +491,7 @@ public abstract class JoinAbstractWrapper {
if (CollectionUtils.isNotEmpty(columns)) {
columns.forEach(c -> appendSqlSegments(ORDER_BY,
- columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), ASC));
+ columnToSqlSegment(index, alias, columnSqlInjectFilter(c), true), ASC));
}
});
}
@@ -534,7 +534,7 @@ public abstract class JoinAbstractWrapper {
if (CollectionUtils.isNotEmpty(columns)) {
columns.forEach(c -> appendSqlSegments(ORDER_BY,
- columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), DESC));
+ columnToSqlSegment(index, alias, columnSqlInjectFilter(c), true), DESC));
}
});
}
@@ -577,10 +577,10 @@ public abstract class JoinAbstractWrapper Children orderBy(boolean condition, boolean isAsc, String alias, SFunction column, SFunction... columns) {
return maybeDo(condition, () -> {
final SqlKeyword mode = isAsc ? ASC : DESC;
- appendSqlSegments(ORDER_BY, columnToSqlSegment(index, alias, column), mode);
+ appendSqlSegments(ORDER_BY, columnToSqlSegment(index, alias, column, true), mode);
if (ArrayUtils.isNotEmpty(columns)) {
Arrays.stream(columns).forEach(c -> appendSqlSegments(ORDER_BY,
- columnToSqlSegment(index, alias, columnSqlInjectFilter(c)), mode));
+ columnToSqlSegment(index, alias, columnSqlInjectFilter(c), true), mode));
}
});
}
@@ -632,7 +632,7 @@ public abstract class JoinAbstractWrapper拼接 LIKE 以及 值
*/
protected Children likeValue(boolean condition, SqlKeyword keyword, String alias, SFunction column, Object val, SqlLike sqlLike) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), keyword,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), keyword,
() -> formatParam(null, SqlUtils.concatLike(val, sqlLike))));
}
@@ -650,7 +650,7 @@ public abstract class JoinAbstractWrapper Children addCondition(boolean condition, String alias, SFunction column, SqlKeyword sqlKeyword, Object val) {
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), sqlKeyword,
() -> formatParam(null, val)));
}
@@ -658,7 +658,7 @@ public abstract class JoinAbstractWrapper val) {
Class c = LambdaUtils.getEntityClass(column);
Class v = LambdaUtils.getEntityClass(val);
- return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column), sqlKeyword,
+ return maybeDo(condition, () -> appendSqlSegments(columnToSqlSegment(index, alias, column, false), sqlKeyword,
isOn ? columnToSqlSegmentS(index, rightAlias, val, v == c && v == joinClass) :
columnToSqlSegmentS(index, rightAlias, val, v == c)
));
@@ -844,8 +844,8 @@ public abstract class JoinAbstractWrapper ISqlSegment columnToSqlSegment(Integer index, String alias, SFunction column) {
- return () -> columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST);
+ protected final ISqlSegment columnToSqlSegment(Integer index, String alias, SFunction column, boolean orderBy) {
+ return () -> columnToString(index, alias, column, false, isOn ? PrefixEnum.ON_FIRST : PrefixEnum.CD_FIRST, orderBy);
}
protected final ISqlSegment columnToSqlSegmentS(Integer index, String alias, SFunction column, boolean isJoin) {
@@ -855,7 +855,7 @@ public abstract class JoinAbstractWrapper columnToString(index, alias, column, isJoin, prefixEnum);
+ return () -> columnToString(index, alias, column, isJoin, prefixEnum, false);
}
protected final ISqlSegment columnToSqlSegment(String column) {
@@ -865,7 +865,7 @@ public abstract class JoinAbstractWrapper String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum) {
+ protected String columnToString(Integer index, String alias, X column, boolean isJoin, PrefixEnum prefixEnum, boolean orderBy) {
return (String) column;
}
@@ -890,10 +890,12 @@ public abstract class JoinAbstractWrapper String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, X... columns);
+ abstract String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, boolean orderBy, X... columns);
- public String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, List columns) {
- return columns.stream().map(i -> columnToString(index, alias, (SFunction, ?>) i, false, prefixEnum)).collect(joining(StringPool.COMMA));
+ public String columnsToString(Integer index, PrefixEnum prefixEnum, String alias, boolean orderBy, List columns) {
+ return columns.stream().map(i ->
+ columnToString(index, alias, (SFunction, ?>) i, false, prefixEnum, orderBy))
+ .collect(joining(StringPool.COMMA));
}
@Override
diff --git a/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java b/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java
index f2a9b23..65ce1d5 100644
--- a/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java
+++ b/mybatis-plus-join-test/test-base/src/main/java/com/github/yulichang/test/config/MybatisPlusConfig.java
@@ -56,7 +56,7 @@ public class MybatisPlusConfig {
@Override
public boolean ignoreTable(String tableName) {
- return !"user_tenant".equals(tableName);
+ return !tableName.startsWith("user_tenant");
}
}));
interceptor.addInnerInterceptor(page);
diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/OrderByTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/OrderByTest.java
index f016bd4..4cfbeb9 100644
--- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/OrderByTest.java
+++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/m/OrderByTest.java
@@ -1,6 +1,8 @@
package com.github.yulichang.test.join.m;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
+import com.github.yulichang.test.join.dto.UserDTO;
+import com.github.yulichang.test.join.entity.AddressDO;
import com.github.yulichang.test.join.entity.UserDO;
import com.github.yulichang.test.util.Reset;
import com.github.yulichang.test.util.ThreadLocalUtils;
@@ -55,4 +57,18 @@ public class OrderByTest {
list.forEach(System.out::println);
}
+
+ @Test
+ void orderBy2() {
+ MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class)
+ .selectAll(UserDO.class)
+ .selectAs(AddressDO::getId, UserDTO::getAddress)
+ .leftJoin(AddressDO.class, AddressDO::getUserId, UserDO::getId)
+ .orderByAsc(UserDTO::getAddress);
+
+
+ List list = wrapper.list();
+ list.forEach(System.out::println);
+ }
+
}