diff --git a/src/main/java/org/redkale/source/DataJdbcSource.java b/src/main/java/org/redkale/source/DataJdbcSource.java index c9cc04ba6..14416f15d 100644 --- a/src/main/java/org/redkale/source/DataJdbcSource.java +++ b/src/main/java/org/redkale/source/DataJdbcSource.java @@ -10,10 +10,11 @@ import java.sql.*; import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; -import java.util.function.Function; +import java.util.function.*; import java.util.logging.Level; import java.util.stream.Stream; import org.redkale.annotation.AutoLoad; +import org.redkale.annotation.*; import org.redkale.annotation.ResourceListener; import org.redkale.annotation.ResourceType; import org.redkale.service.Local; @@ -2460,7 +2461,7 @@ public class DataJdbcSource extends AbstractDataSqlSource { * @return 结果 */ @Override - public V executeQuery(String sql, Function handler) { + public V executeQuery(String sql, BiConsumer consumer, Function handler) { final long s = System.currentTimeMillis(); final SourceConnection conn = readPool.pollConnection(); try { @@ -2468,8 +2469,10 @@ public class DataJdbcSource extends AbstractDataSqlSource { logger.finest("executeQuery sql=" + sql); } final Statement stmt = conn.createQueryStatement(); - //final PreparedStatement prestmt = conn.prepareStatement(sql); - final ResultSet set = stmt.executeQuery(sql);// prestmt.executeQuery(); + if (consumer != null) { + consumer.accept(conn, stmt); + } + final ResultSet set = stmt.executeQuery(sql); V rs = handler.apply(createDataResultSet(null, set)); set.close(); conn.offerQueryStatement(stmt); @@ -2499,7 +2502,7 @@ public class DataJdbcSource extends AbstractDataSqlSource { return executeQuery(sql, handler); } - public static DataResultSet createDataResultSet(EntityInfo info, ResultSet set) { + public static DataResultSet createDataResultSet(@Nullable EntityInfo info, ResultSet set) { return new DataJdbcResultSet(info).resultSet(set); } diff --git a/src/main/java/org/redkale/source/DataMemorySource.java b/src/main/java/org/redkale/source/DataMemorySource.java index 6e744330f..8c77e5fe4 100644 --- a/src/main/java/org/redkale/source/DataMemorySource.java +++ b/src/main/java/org/redkale/source/DataMemorySource.java @@ -8,7 +8,7 @@ package org.redkale.source; import java.io.Serializable; import java.util.*; import java.util.concurrent.CompletableFuture; -import java.util.function.Function; +import java.util.function.*; import org.redkale.annotation.AutoLoad; import org.redkale.annotation.ResourceListener; import org.redkale.annotation.ResourceType; @@ -104,7 +104,7 @@ public class DataMemorySource extends AbstractDataSqlSource implements SearchSou } @Override - public V executeQuery(String sql, Function handler) { + public V executeQuery(String sql, BiConsumer consumer, Function handler) { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/main/java/org/redkale/source/DataSqlSource.java b/src/main/java/org/redkale/source/DataSqlSource.java index dccff133a..34c49165c 100644 --- a/src/main/java/org/redkale/source/DataSqlSource.java +++ b/src/main/java/org/redkale/source/DataSqlSource.java @@ -4,7 +4,7 @@ package org.redkale.source; import java.util.*; -import java.util.function.Function; +import java.util.function.*; /** * @@ -22,7 +22,12 @@ public interface DataSqlSource extends DataSource { public int[] executeUpdate(String... sqls); - public V executeQuery(String sql, Function handler); + //BiConsumer 参数1: connection, 参数2: statement + public V executeQuery(String sql, BiConsumer consumer, Function handler); + + default V executeQuery(String sql, Function handler) { + return executeQuery(sql, null, handler); + } default V executeQueryOne(Class type, String sql) { return executeQuery(sql, rset -> {