优化Source

This commit is contained in:
redkale
2023-03-30 12:56:32 +08:00
parent 1dbaf107ca
commit c9c202f63f
4 changed files with 17 additions and 5 deletions

View File

@@ -112,6 +112,8 @@ public abstract class AbstractDataSource extends AbstractService implements Data
//@since 2.7.0 //@since 2.7.0
public static final String DATA_SOURCE_TABLECOPY_SQLTEMPLATE = "tablecopy-sqltemplate"; public static final String DATA_SOURCE_TABLECOPY_SQLTEMPLATE = "tablecopy-sqltemplate";
protected final IntFunction<Serializable[]> serialArrayFunc = Utility.serialArrayFunc();
private final ReentrantLock executorLock = new ReentrantLock(); private final ReentrantLock executorLock = new ReentrantLock();
private int sourceThreads = Utility.cpus(); private int sourceThreads = Utility.cpus();

View File

@@ -2585,7 +2585,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
@Override @Override
public <D extends Serializable, T> CompletableFuture<List<T>> findsListAsync(final Class<T> clazz, final Stream<D> pks) { public <D extends Serializable, T> CompletableFuture<List<T>> findsListAsync(final Class<T> clazz, final Stream<D> pks) {
final EntityInfo<T> info = loadEntityInfo(clazz); final EntityInfo<T> 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)); return queryListAsync(info.getType(), null, null, FilterNode.create(info.getPrimarySQLColumn(), FilterExpress.IN, ids));
} }

View File

@@ -1530,7 +1530,7 @@ public interface DataSource extends Resourcable {
* @return Entity对象 * @return Entity对象
*/ */
default <D extends Serializable, T> T[] finds(final Class<T> clazz, final Stream<D> pks) { default <D extends Serializable, T> T[] finds(final Class<T> clazz, final Stream<D> 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 * @return Entity对象 CompletableFuture
*/ */
default <D extends Serializable, T> CompletableFuture<T[]> findsAsync(final Class<T> clazz, final Stream<D> pks) { default <D extends Serializable, T> CompletableFuture<T[]> findsAsync(final Class<T> clazz, final Stream<D> 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对象 * @return Entity对象
*/ */
default <D extends Serializable, T> T[] finds(final Class<T> clazz, final SelectColumn selects, final Stream<D> pks) { default <D extends Serializable, T> T[] finds(final Class<T> clazz, final SelectColumn selects, final Stream<D> 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对象 * @return Entity对象
*/ */
default <D extends Serializable, T> CompletableFuture<T[]> findsAsync(final Class<T> clazz, final SelectColumn selects, final Stream<D> pks) { default <D extends Serializable, T> CompletableFuture<T[]> findsAsync(final Class<T> clazz, final SelectColumn selects, final Stream<D> pks) {
return findsAsync(clazz, selects, pks.toArray(v -> new Serializable[v])); return findsAsync(clazz, selects, pks.toArray(Utility.serialArrayFunc()));
} }
/** /**

View File

@@ -52,6 +52,8 @@ public final class Utility {
private static final IntFunction<CompletableFuture[]> futureArrayFunc = c -> new CompletableFuture[c]; private static final IntFunction<CompletableFuture[]> futureArrayFunc = c -> new CompletableFuture[c];
private static final IntFunction<Serializable[]> serialArrayFunc = v -> new Serializable[v];
static { static {
Class clz = null; Class clz = null;
try { try {
@@ -208,6 +210,14 @@ public final class Utility {
return signalShutdownConsumer; return signalShutdownConsumer;
} }
public static IntFunction<Serializable[]> serialArrayFunc() {
return serialArrayFunc;
}
public static IntFunction<CompletableFuture[]> futureArrayFunc() {
return futureArrayFunc;
}
public static void sleep(long millis) { public static void sleep(long millis) {
try { try {
Thread.sleep(millis); Thread.sleep(millis);