From 9343c8eabdae0004a86be16a937be3a518535ade Mon Sep 17 00:00:00 2001 From: cybzzz Date: Sat, 15 Nov 2025 13:24:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B8=A6=E5=AD=90=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=9A=84=E5=9C=BA=E6=99=AF=E4=B8=8B=EF=BC=8C=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AF=AF=E5=88=A0=20join=20=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/query/OperatorSelectCondition.java | 3 +- .../test/common/QueryWrapperTest.java | 28 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/OperatorSelectCondition.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/OperatorSelectCondition.java index 9bd28183..679834bb 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/OperatorSelectCondition.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/OperatorSelectCondition.java @@ -76,7 +76,8 @@ public class OperatorSelectCondition extends QueryCondition { @Override boolean containsTable(String... tables) { QueryCondition condition = queryWrapper.getWhereQueryCondition(); - return condition != null && condition.containsTable(tables); + boolean subContains = condition != null && condition.containsTable(tables); + return subContains || nextContainsTable(tables); } @Override diff --git a/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/common/QueryWrapperTest.java b/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/common/QueryWrapperTest.java index f3dda420..a1984538 100644 --- a/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/common/QueryWrapperTest.java +++ b/mybatis-flex-test/mybatis-flex-spring-boot-test/src/test/java/com/mybatisflex/test/common/QueryWrapperTest.java @@ -31,11 +31,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import static com.mybatisflex.core.query.QueryMethods.case_; -import static com.mybatisflex.core.query.QueryMethods.column; -import static com.mybatisflex.core.query.QueryMethods.count; -import static com.mybatisflex.core.query.QueryMethods.distinct; -import static com.mybatisflex.core.query.QueryMethods.select; +import static com.mybatisflex.core.query.QueryMethods.*; import static com.mybatisflex.test.model.table.RoleTableDef.ROLE; import static com.mybatisflex.test.model.table.UserRoleTableDef.USER_ROLE; import static com.mybatisflex.test.model.table.UserTableDef.USER; @@ -199,4 +195,26 @@ class QueryWrapperTest { " AND ` user_name ` = ''", sql); } + @Test + void test07() { + QueryWrapper queryWrapper = QueryWrapper.create() + .select() + .from(USER.as("u")) + .leftJoin(USER_ROLE).as("ur").on(USER.USER_ID.eq(USER_ROLE.USER_ID)) + .where(QueryCondition.createEmpty()) + .and(USER.USER_ID.eq(1).or(USER.USER_ID.in( + QueryWrapper.create().select(USER_ROLE.USER_ID).from(USER_ROLE))) + ) + .and( + exists(selectOne().from(ROLE) + .where(ROLE.ROLE_ID.eq(USER_ROLE.ROLE_ID))) + ) + .and(USER_ROLE.USER_ID.eq(1)); + System.out.println(queryWrapper.toSQL()); + QueryCondition whereQueryCondition = CPI.getWhereQueryCondition(queryWrapper); + boolean contained = CPI.containsTable(whereQueryCondition, "tb_user_role"); + + Assertions.assertTrue(contained); + } + }