From d11b81160ed5ee93053fcbe0d0eaac66de09fb2e Mon Sep 17 00:00:00 2001 From: x7airworker Date: Tue, 18 Apr 2023 15:07:10 +0200 Subject: [PATCH] Added support for Lists and Streams in whereIn / whereNotIn --- .../wrapper/builder/MySQLQueryStringBuilder.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java b/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java index 3c706e1..a97bb4f 100644 --- a/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java +++ b/src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java @@ -1,5 +1,6 @@ package org.javawebstack.orm.wrapper.builder; +import org.javawebstack.abstractdata.AbstractArray; import org.javawebstack.orm.*; import org.javawebstack.orm.exception.ORMQueryException; import org.javawebstack.orm.query.*; @@ -8,12 +9,10 @@ import java.lang.reflect.Method; import java.sql.Timestamp; import java.time.Instant; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; +import java.util.stream.Stream; public class MySQLQueryStringBuilder implements QueryStringBuilder { @@ -213,6 +212,12 @@ private SQLQueryString convertCondition(TableInfo info, QueryCondition condition sb.append(' '); if (condition.getOperator().endsWith("IN")) { Object[] values = (Object[]) condition.getRight(); + if (values.length == 1) { + if (values[0] instanceof Collection) + values = ((Collection) values[0]).toArray(); + else if (values[0] instanceof Stream) + values = ((Stream) values[0]).toArray(); + } sb.append("(").append(IntStream.range(0, values.length).mapToObj(i -> "?").collect(Collectors.joining(","))).append(")"); parameters.addAll(Arrays.asList(values)); } else if (condition.getRight() instanceof QueryColumn) {