From f7618f5da466c075d020848cca0ddda801e50bad Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Wed, 15 Aug 2018 14:49:20 +0800 Subject: [PATCH] =?UTF-8?q?DataSqlSource.directQuery=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8F=98=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/source/DataJdbcSource.java | 14 +++++++++----- src/org/redkale/source/DataMemorySource.java | 4 ++-- src/org/redkale/source/DataSqlSource.java | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/org/redkale/source/DataJdbcSource.java b/src/org/redkale/source/DataJdbcSource.java index a523294f8..8daaa1197 100644 --- a/src/org/redkale/source/DataJdbcSource.java +++ b/src/org/redkale/source/DataJdbcSource.java @@ -11,7 +11,7 @@ import java.sql.*; import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; -import java.util.function.Consumer; +import java.util.function.*; import java.util.logging.Level; import org.redkale.service.Local; import org.redkale.util.*; @@ -589,12 +589,15 @@ public class DataJdbcSource extends DataSqlSource { * 直接本地执行SQL语句进行查询,远程模式不可用
* 通常用于复杂的关联查询
* - * @param sql SQL语句 - * @param consumer 回调函数 + * @param 泛型 + * @param sql SQL语句 + * @param handler 回调函数 + * + * @return 结果 */ @Local @Override - public void directQuery(String sql, Consumer consumer) { + public V directQuery(String sql, Function handler) { final Connection conn = readPool.poll(); try { if (logger.isLoggable(Level.FINEST)) logger.finest("direct query sql=" + sql); @@ -602,9 +605,10 @@ public class DataJdbcSource extends DataSqlSource { final Statement statement = conn.createStatement(); //final PreparedStatement statement = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); final ResultSet set = statement.executeQuery(sql);// ps.executeQuery(); - consumer.accept(set); + V rs = handler.apply(set); set.close(); statement.close(); + return rs; } catch (Exception ex) { throw new RuntimeException(ex); } finally { diff --git a/src/org/redkale/source/DataMemorySource.java b/src/org/redkale/source/DataMemorySource.java index 6b365a73c..b7fb414d5 100644 --- a/src/org/redkale/source/DataMemorySource.java +++ b/src/org/redkale/source/DataMemorySource.java @@ -10,7 +10,7 @@ import java.net.URL; import java.sql.ResultSet; import java.util.*; import java.util.concurrent.*; -import java.util.function.Consumer; +import java.util.function.*; import org.redkale.service.Local; import org.redkale.util.*; @@ -64,7 +64,7 @@ public class DataMemorySource extends DataSqlSource { @Local @Override - public void directQuery(String sql, Consumer consumer) { + public V directQuery(String sql, Function handler) { throw new UnsupportedOperationException("Not supported yet."); } diff --git a/src/org/redkale/source/DataSqlSource.java b/src/org/redkale/source/DataSqlSource.java index 4ff914d7c..fe8eaef06 100644 --- a/src/org/redkale/source/DataSqlSource.java +++ b/src/org/redkale/source/DataSqlSource.java @@ -116,7 +116,7 @@ public abstract class DataSqlSource extends AbstractService implement public abstract int[] directExecute(String... sqls); @Local - public abstract void directQuery(String sql, Consumer consumer); + public abstract V directQuery(String sql, Function handler); //是否异步, 为true则只能调用pollAsync方法,为false则只能调用poll方法 protected abstract boolean isAsync();