From 0353f972e700bf845bf7780e11efec289aa1562c Mon Sep 17 00:00:00 2001 From: yulichang <570810310@qq.com> Date: Tue, 19 Nov 2024 21:41:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=90=E6=9F=A5=E8=AF=A2=E6=B7=BB=E5=8A=A0un?= =?UTF-8?q?ion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yulichang/toolkit/WrapperUtils.java | 3 ++ .../yulichang/test/join/unit/FromTest.java | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/WrapperUtils.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/WrapperUtils.java index 8f4da91..952bdbd 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/WrapperUtils.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/toolkit/WrapperUtils.java @@ -45,6 +45,7 @@ public class WrapperUtils implements StringPool { String sqlSegment = (wrapper.getSqlSegment() != null && StrUtils.isNotBlank(wrapper.getSqlSegment())) ? ((wrapper.isEmptyOfNormal() ? EMPTY : (hasWhere ? " AND " : " WHERE ")) + wrapper.getSqlSegment()) : EMPTY; String sqlComment = Optional.ofNullable(wrapper.getSqlComment()).orElse(EMPTY); + String sqlUnion = wrapper.getUnionSql(); StringBuilder sb = new StringBuilder(SPACE) .append(first) .append(" SELECT ") @@ -63,6 +64,8 @@ public class WrapperUtils implements StringPool { .append(sqlSegment) .append(SPACE) .append(sqlComment) + .append(SPACE) + .append(sqlUnion) .append(SPACE); if (brackets) { sb.insert(0, "(").append(")"); diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/FromTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/FromTest.java index 5cf7bf9..1df24ea 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/FromTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/unit/FromTest.java @@ -43,4 +43,32 @@ public class FromTest { .ge(UserDO::getId, 0)); wrapper.list(); } + + @Test + void from1() { + 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 (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 >= ?) + UNION ALL + (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)) t + WHERE t.del = false + """); + MPJLambdaWrapper wrapper = JoinWrappers.lambda(UserDO.class) + .selectAll() + .from(from -> from + .selectAll() + .ge(UserDO::getId, 0) + .unionAll(UserDO.class, MPJLambdaWrapper::selectAll)); + wrapper.list(); + } }