From c9c202f63f837157e8efef11e2cda0d091bc8f9d Mon Sep 17 00:00:00 2001 From: redkale Date: Thu, 30 Mar 2023 12:56:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/source/AbstractDataSource.java | 2 ++ .../java/org/redkale/source/AbstractDataSqlSource.java | 2 +- src/main/java/org/redkale/source/DataSource.java | 8 ++++---- src/main/java/org/redkale/util/Utility.java | 10 ++++++++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/redkale/source/AbstractDataSource.java b/src/main/java/org/redkale/source/AbstractDataSource.java index 58b5126bf..d868dc537 100644 --- a/src/main/java/org/redkale/source/AbstractDataSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSource.java @@ -112,6 +112,8 @@ public abstract class AbstractDataSource extends AbstractService implements Data //@since 2.7.0 public static final String DATA_SOURCE_TABLECOPY_SQLTEMPLATE = "tablecopy-sqltemplate"; + protected final IntFunction serialArrayFunc = Utility.serialArrayFunc(); + private final ReentrantLock executorLock = new ReentrantLock(); private int sourceThreads = Utility.cpus(); diff --git a/src/main/java/org/redkale/source/AbstractDataSqlSource.java b/src/main/java/org/redkale/source/AbstractDataSqlSource.java index 0512c56af..2db45c6df 100644 --- a/src/main/java/org/redkale/source/AbstractDataSqlSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSqlSource.java @@ -2585,7 +2585,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement @Override public CompletableFuture> findsListAsync(final Class clazz, final Stream pks) { final EntityInfo info = loadEntityInfo(clazz); - Serializable[] ids = pks.toArray(v -> new Serializable[v]); + Serializable[] ids = pks.toArray(serialArrayFunc); return queryListAsync(info.getType(), null, null, FilterNode.create(info.getPrimarySQLColumn(), FilterExpress.IN, ids)); } diff --git a/src/main/java/org/redkale/source/DataSource.java b/src/main/java/org/redkale/source/DataSource.java index a8bc38a16..0276f356b 100644 --- a/src/main/java/org/redkale/source/DataSource.java +++ b/src/main/java/org/redkale/source/DataSource.java @@ -1530,7 +1530,7 @@ public interface DataSource extends Resourcable { * @return Entity对象 */ default T[] finds(final Class clazz, final Stream pks) { - return finds(clazz, (SelectColumn) null, pks.toArray(v -> new Serializable[v])); + return finds(clazz, (SelectColumn) null, pks.toArray(Utility.serialArrayFunc())); } /** @@ -1559,7 +1559,7 @@ public interface DataSource extends Resourcable { * @return Entity对象 CompletableFuture */ default CompletableFuture findsAsync(final Class clazz, final Stream pks) { - return findsAsync(clazz, (SelectColumn) null, pks.toArray(v -> new Serializable[v])); + return findsAsync(clazz, (SelectColumn) null, pks.toArray(Utility.serialArrayFunc())); } /** @@ -1588,7 +1588,7 @@ public interface DataSource extends Resourcable { * @return Entity对象 */ default T[] finds(final Class clazz, final SelectColumn selects, final Stream pks) { - return finds(clazz, selects, pks.toArray(v -> new Serializable[v])); + return finds(clazz, selects, pks.toArray(Utility.serialArrayFunc())); } /** @@ -1617,7 +1617,7 @@ public interface DataSource extends Resourcable { * @return Entity对象 */ default CompletableFuture findsAsync(final Class clazz, final SelectColumn selects, final Stream pks) { - return findsAsync(clazz, selects, pks.toArray(v -> new Serializable[v])); + return findsAsync(clazz, selects, pks.toArray(Utility.serialArrayFunc())); } /** diff --git a/src/main/java/org/redkale/util/Utility.java b/src/main/java/org/redkale/util/Utility.java index 6de6392cd..3de05637d 100644 --- a/src/main/java/org/redkale/util/Utility.java +++ b/src/main/java/org/redkale/util/Utility.java @@ -52,6 +52,8 @@ public final class Utility { private static final IntFunction futureArrayFunc = c -> new CompletableFuture[c]; + private static final IntFunction serialArrayFunc = v -> new Serializable[v]; + static { Class clz = null; try { @@ -208,6 +210,14 @@ public final class Utility { return signalShutdownConsumer; } + public static IntFunction serialArrayFunc() { + return serialArrayFunc; + } + + public static IntFunction futureArrayFunc() { + return futureArrayFunc; + } + public static void sleep(long millis) { try { Thread.sleep(millis);