From af3451b43faa9c7aa7510ccadefa1c8dbe235ef4 Mon Sep 17 00:00:00 2001 From: axbest Date: Wed, 19 Nov 2025 16:13:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(sql):=E4=BC=98=E5=8C=96=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=AF=AD=E5=8F=A5=E4=B8=AD=E5=8D=95=E4=B8=BB=E9=94=AE=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E6=8B=BC=E6=8E=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将单主键删除条件从 OR 拼接改为 IN 方式拼接 --- .../dialect/impl/ClickhouseDialectImpl.java | 12 ++++++++---- .../core/dialect/impl/CommonsDialectImpl.java | 19 +++++++++++++------ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/ClickhouseDialectImpl.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/ClickhouseDialectImpl.java index af39479a..14575f79 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/ClickhouseDialectImpl.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/ClickhouseDialectImpl.java @@ -231,12 +231,14 @@ public class ClickhouseDialectImpl extends CommonsDialectImpl { } // 单主键 else { + sql.append(wrap(primaryKeys[0])).append(IN).append(BRACKET_LEFT); for (int i = 0; i < ids.length; i++) { if (i > 0) { - sql.append(OR); + sql.append(DELIMITER); } - sql.append(wrap(primaryKeys[0])).append(EQUALS_PLACEHOLDER); + sql.append(PLACEHOLDER); } + sql.append(BRACKET_RIGHT); } prepareAuth(schema, table, sql, OperateType.DELETE); return sql.toString(); @@ -294,12 +296,14 @@ public class ClickhouseDialectImpl extends CommonsDialectImpl { } // 单主键 else { + sql.append(wrap(primaryKeys[0])).append(IN).append(BRACKET_LEFT); for (int i = 0; i < primaryValues.length; i++) { if (i > 0) { - sql.append(OR); + sql.append(DELIMITER); } - sql.append(wrap(primaryKeys[0])).append(EQUALS_PLACEHOLDER); + sql.append(PLACEHOLDER); } + sql.append(BRACKET_RIGHT); } sql.append(BRACKET_RIGHT).append(AND).append(buildLogicNormalCondition(logicDeleteColumn, tableInfo)); diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java index a4cdb4db..c9345e5d 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/dialect/impl/CommonsDialectImpl.java @@ -47,6 +47,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import static com.mybatisflex.core.constant.SqlConsts.AND; +import static com.mybatisflex.core.constant.SqlConsts.IN; import static com.mybatisflex.core.constant.SqlConsts.ASTERISK; import static com.mybatisflex.core.constant.SqlConsts.BLANK; import static com.mybatisflex.core.constant.SqlConsts.BRACKET_LEFT; @@ -242,12 +243,14 @@ public class CommonsDialectImpl implements IDialect { } // 单主键 else { + sql.append(wrap(primaryKeys[0])).append(IN).append(BRACKET_LEFT); for (int i = 0; i < ids.length; i++) { if (i > 0) { - sql.append(OR); + sql.append(DELIMITER); } - sql.append(wrap(primaryKeys[0])).append(EQUALS_PLACEHOLDER); + sql.append(PLACEHOLDER); } + sql.append(BRACKET_RIGHT); } prepareAuth(schema, table, sql, OperateType.DELETE); return sql.toString(); @@ -776,12 +779,14 @@ public class CommonsDialectImpl implements IDialect { } // 单主键 else { + sql.append(wrap(primaryKeys[0])).append(IN).append(BRACKET_LEFT); for (int i = 0; i < primaryValues.length; i++) { if (i > 0) { - sql.append(OR); + sql.append(DELIMITER); } - sql.append(wrap(primaryKeys[0])).append(EQUALS_PLACEHOLDER); + sql.append(PLACEHOLDER); } + sql.append(BRACKET_RIGHT); } sql.append(BRACKET_RIGHT).append(AND).append(buildLogicNormalCondition(logicDeleteColumn, tableInfo)); @@ -1025,12 +1030,14 @@ public class CommonsDialectImpl implements IDialect { } // 单主键 else { + sql.append(wrap(primaryKeys[0])).append(IN).append(BRACKET_LEFT); for (int i = 0; i < primaryValues.length; i++) { if (i > 0) { - sql.append(OR); + sql.append(DELIMITER); } - sql.append(wrap(primaryKeys[0])).append(EQUALS_PLACEHOLDER); + sql.append(PLACEHOLDER); } + sql.append(BRACKET_RIGHT); } if (StringUtil.hasText(logicDeleteColumn) || ArrayUtil.isNotEmpty(tenantIdArgs)) {