From cfc9c20a99c1f0527e32897c15b7b05ec0cbe529 Mon Sep 17 00:00:00 2001 From: gosk Date: Wed, 25 Oct 2023 17:05:39 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20in=E9=87=8C=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E7=9A=84=E9=9B=86=E5=90=88=E4=B8=BA=E7=A9=BA=E6=88=96=E8=80=85?= =?UTF-8?q?null=E6=97=B6=EF=BC=8C=E6=8A=8A=E8=BF=94=E5=9B=9E=E5=80=BC?= =?UTF-8?q?=E6=94=B9=E4=B8=BA"(null)"=E3=80=82=E8=BF=99=E6=A0=B7=E5=B0=B1?= =?UTF-8?q?=E4=B8=8D=E7=94=A8=E6=AF=8F=E6=AC=A1=E4=BD=BF=E7=94=A8in?= =?UTF-8?q?=E6=97=B6=E5=AF=B9=E6=8C=87=E5=AE=9A=E7=9A=84=E9=9B=86=E5=90=88?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E9=9D=9E=E7=A9=BA=E5=88=A4=E6=96=AD=E4=BA=86?= =?UTF-8?q?(=E4=B8=8D=E5=88=A4=E6=96=AD=E7=9A=84=E8=AF=9D=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=8F=91=E7=94=9F=E8=BF=90=E8=A1=8C=E6=97=B6=E7=9A=84?= =?UTF-8?q?sql=E9=94=99=E8=AF=AF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../baomidou/mybatisplus/core/conditions/AbstractWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java b/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java index 2a7b43216..1abb43290 100755 --- a/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java +++ b/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java @@ -549,7 +549,7 @@ public abstract class AbstractWrapper value) { if (CollectionUtils.isEmpty(value)) { - return () -> "()"; + return () -> "(null)"; } return () -> value.stream().map(i -> formatParam(null, i)) .collect(joining(StringPool.COMMA, StringPool.LEFT_BRACKET, StringPool.RIGHT_BRACKET)); -- Gitee From efaa4cae0a1336cf7868ccb359e291fca48fb1e6 Mon Sep 17 00:00:00 2001 From: gosk Date: Wed, 25 Oct 2023 17:22:45 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20in=E9=87=8C=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E7=9A=84=E9=9B=86=E5=90=88=E4=B8=BA=E7=A9=BA=E6=88=96=E8=80=85?= =?UTF-8?q?null=E6=97=B6=EF=BC=8C=E6=8A=8A=E8=BF=94=E5=9B=9E=E5=80=BC?= =?UTF-8?q?=E6=94=B9=E4=B8=BA"(null)"=E3=80=82=E8=BF=99=E6=A0=B7=E5=B0=B1?= =?UTF-8?q?=E4=B8=8D=E7=94=A8=E6=AF=8F=E6=AC=A1=E4=BD=BF=E7=94=A8in?= =?UTF-8?q?=E6=97=B6=E5=AF=B9=E6=8C=87=E5=AE=9A=E7=9A=84=E9=9B=86=E5=90=88?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E9=9D=9E=E7=A9=BA=E5=88=A4=E6=96=AD=E4=BA=86?= =?UTF-8?q?(=E4=B8=8D=E5=88=A4=E6=96=AD=E7=9A=84=E8=AF=9D=E5=8F=AF?= =?UTF-8?q?=E8=83=BD=E5=8F=91=E7=94=9F=E8=BF=90=E8=A1=8C=E6=97=B6=E7=9A=84?= =?UTF-8?q?sql=E9=94=99=E8=AF=AF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/conditions/AbstractWrapper.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java b/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java index 1abb43290..b022f21b6 100755 --- a/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java +++ b/mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java @@ -549,12 +549,21 @@ public abstract class AbstractWrapper value) { if (CollectionUtils.isEmpty(value)) { - return () -> "(null)"; + return whenCollectionIsEmpty(); } return () -> value.stream().map(i -> formatParam(null, i)) .collect(joining(StringPool.COMMA, StringPool.LEFT_BRACKET, StringPool.RIGHT_BRACKET)); } + /** + * 当in的参数为null或空时的动态sql + */ + private ISqlSegment whenCollectionIsEmpty(){ + // 为避免出现 "where 字段 in ()" 这样有语法错误的sql,强行弄成"where 字段 in (null)" + // 这样虽然也不完美,但是大多数时候还是挺方便的 + return () -> "(null)"; + } + /** * 获取in表达式 包含括号 * @@ -562,7 +571,7 @@ public abstract class AbstractWrapper "()"; + return whenCollectionIsEmpty(); } return () -> Arrays.stream(values).map(i -> formatParam(null, i)) .collect(joining(StringPool.COMMA, StringPool.LEFT_BRACKET, StringPool.RIGHT_BRACKET)); -- Gitee