子查询添加union

This commit is contained in:
yulichang 2024-11-19 21:41:31 +08:00
parent 4401ad8ca6
commit 0353f972e7
2 changed files with 31 additions and 0 deletions

View File

@ -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(")");

View File

@ -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<UserDO> wrapper = JoinWrappers.lambda(UserDO.class)
.selectAll()
.from(from -> from
.selectAll()
.ge(UserDO::getId, 0)
.unionAll(UserDO.class, MPJLambdaWrapper::selectAll));
wrapper.list();
}
}