From 98b3c7b92ed7c0a026c53a23724ae80c0a757cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=B8=85?= <1474983351@qq.com> Date: Mon, 28 Oct 2024 16:26:52 +0800 Subject: [PATCH] =?UTF-8?q?fixed:=20=E5=AD=90=E6=9F=A5=E8=AF=A2=E7=94=A8?= =?UTF-8?q?=E5=88=B0=E4=BA=86=E5=A4=96=E9=83=A8=E6=9F=A5=E8=AF=A2=E7=9A=84?= =?UTF-8?q?=E5=88=97=E6=97=B6=EF=BC=8C=E4=B8=A4=E4=B8=AA=E5=88=97=E9=87=8D?= =?UTF-8?q?=E5=90=8D=E6=B2=A1=E6=9C=89=E5=88=97=E5=90=8D=E6=8C=87=E5=90=91?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatisflex/core/query/QueryColumn.java | 15 +++++-- .../test/common/QueryWrapperTest.java | 42 ++++++++++++++++++- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java index d79efb10..01a12286 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/query/QueryColumn.java @@ -977,15 +977,17 @@ public class QueryColumn implements CloneSupport, Conditional, Conditional it = queryTables.listIterator(queryTables.size()); 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 5c782c85..7fe29011 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 @@ -16,16 +16,23 @@ package com.mybatisflex.test.common; +import com.github.vertical_blank.sqlformatter.SqlFormatter; import com.mybatisflex.core.query.CPI; import com.mybatisflex.core.query.QueryCondition; import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.RawQueryTable; +import com.mybatisflex.test.model.table.RoleTableDef; +import com.mybatisflex.test.model.table.UserTableDef; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.Arrays; -import static com.mybatisflex.core.query.QueryMethods.*; +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.test.model.table.RoleTableDef.ROLE; import static com.mybatisflex.test.model.table.UserRoleTableDef.USER_ROLE; import static com.mybatisflex.test.model.table.UserTableDef.USER; @@ -132,4 +139,37 @@ class QueryWrapperTest { System.out.println(queryWrapper.toSQL()); } + @Test + void test05() { + RoleTableDef r = ROLE.as("r"); + UserTableDef u = USER.as("u"); + + QueryWrapper queryWrapper = QueryWrapper.create() + .select(USER.USER_NAME) + .from(USER) + .leftJoin(u).on(u.USER_ID.eq(USER.USER_ID)) + .where(USER.USER_ID.eq(1)) + // 子查询里面用了父查询里面的表 + .and(column(select(r.ROLE_ID).from(r).where(u.USER_ID.eq(r.ROLE_ID))).le(2)); + + String sql = SqlFormatter.format(queryWrapper.toSQL()); + System.out.println(sql); + + Assertions.assertEquals("SELECT\n" + + " ` tb_user `.` user_name `\n" + + "FROM\n" + + " ` tb_user `\n" + + " LEFT JOIN ` tb_user ` AS ` u ` ON ` u `.` user_id ` = ` tb_user `.` user_id `\n" + + "WHERE\n" + + " ` tb_user `.` user_id ` = 1\n" + + " AND (\n" + + " SELECT\n" + + " ` r `.` role_id `\n" + + " FROM\n" + + " ` tb_role ` AS ` r `\n" + + " WHERE\n" + + " ` u `.` user_id ` = ` r `.` role_id `\n" + + " ) <= 2", sql); + } + }