diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/JSqlParserHelper.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/JSqlParserHelper.java index 3473d84..b42c471 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/JSqlParserHelper.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/JSqlParserHelper.java @@ -36,15 +36,15 @@ public final class JSqlParserHelper { SelectExpressionItem selectExpressionItem = (SelectExpressionItem) item; if (null == selectExpressionItem.getAlias()) { if (selectExpressionItem.getExpression() instanceof Column) { - col = StringUtils.getTargetColumn(((Column) selectExpressionItem.getExpression()).getColumnName()); + col = ((Column) selectExpressionItem.getExpression()).getColumnName(); } else { - col = StringUtils.getTargetColumn(selectExpressionItem.getExpression().toString()); + col = selectExpressionItem.getExpression().toString(); } } else { - col = StringUtils.getTargetColumn(selectExpressionItem.getAlias().getName()); + col = selectExpressionItem.getAlias().getName(); } if (StringUtils.isNotBlank(col)) { - columConsumer.accept(col); + columConsumer.accept(StringUtils.getTargetColumn(col)); } } } 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 61a7b05..66c6b7c 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 @@ -21,9 +21,7 @@ import lombok.Getter; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Function; @@ -371,30 +369,19 @@ public abstract class JoinAbstractLambdaWrapper clazz) { + return onWrappers.stream().anyMatch(wrapper -> { + if (Objects.equals(wrapper.getJoinClass(), clazz)) { + return true; } else { - if (wrapper.from.getStringValue().contains(Constant.JOIN + StringPool.SPACE + tableName)) { - return true; - } + TableInfo info = TableHelper.get(clazz); + Asserts.hasTable(info, clazz); + String tableName = info.getTableName(); + return Optional.ofNullable(wrapper.from.getStringValue()) + .map(w -> w.contains(Constant.JOIN + StringPool.SPACE + tableName + StringPool.SPACE)) + .orElse(false); } - } - - return false; + }); } /** diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/LambdaWrapperTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/LambdaWrapperTest.java index f95bd05..3733724 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/LambdaWrapperTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/LambdaWrapperTest.java @@ -130,6 +130,11 @@ class LambdaWrapperTest { .orderByDesc(UserDO::getId); List list = userMapper.selectJoinList(UserDTO.class, wrapper); + assert wrapper.checkJoinTable(AddressDO.class); + assert wrapper.checkJoinTable(AreaDO.class); + assert !wrapper.checkJoinTable(UserDO.class); + assert !wrapper.checkJoinTable(UserDto.class); + assert list.get(0).getAddressList() != null && list.get(0).getAddressList().get(0).getId() != null; list.forEach(System.out::println); }