From 53b11116b945c9b678aa2782d47a87d5f524c9bf Mon Sep 17 00:00:00 2001
From: Redkale <22250530@qq.com>
Date: Thu, 26 Oct 2017 13:20:05 +0800
Subject: [PATCH] =?UTF-8?q?DataSource=E5=A2=9E=E5=8A=A0queryMap=E7=B3=BB?=
=?UTF-8?q?=E5=88=97=E6=96=B9=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/org/redkale/source/DataJdbcSource.java | 65 ++++++++++++++++++++--
src/org/redkale/source/DataSource.java | 55 ++++++++++++++++++
src/org/redkale/source/FilterNode.java | 10 ++--
3 files changed, 121 insertions(+), 9 deletions(-)
diff --git a/src/org/redkale/source/DataJdbcSource.java b/src/org/redkale/source/DataJdbcSource.java
index d1cf3d524..d27ff0d73 100644
--- a/src/org/redkale/source/DataJdbcSource.java
+++ b/src/org/redkale/source/DataJdbcSource.java
@@ -13,6 +13,7 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.*;
import java.util.logging.*;
+import java.util.stream.Stream;
import javax.annotation.Resource;
import org.redkale.service.*;
import static org.redkale.source.DataSources.*;
@@ -448,7 +449,7 @@ public class DataJdbcSource extends AbstractService implements DataSource, DataC
}
String sql = "DELETE " + (this.readPool.isMysql() ? "a" : "") + " FROM " + info.getTable(node) + " a" + (join1 == null ? "" : (", " + join1))
+ ((where == null || where.length() == 0) ? (join2 == null ? "" : (" WHERE " + join2))
- : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2)))) + info.createSQLOrderby(flipper)
+ : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2)))) + info.createSQLOrderby(flipper)
+ ((flipper == null || flipper.getLimit() < 1) ? "" : (" LIMIT " + flipper.getLimit()));
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(info.getType().getSimpleName() + " delete sql=" + sql);
conn.setReadOnly(false);
@@ -704,7 +705,7 @@ public class DataJdbcSource extends AbstractService implements DataSource, DataC
String sql = "UPDATE " + info.getTable(node) + " a " + (join1 == null ? "" : (", " + join1))
+ " SET " + info.getSQLColumn("a", column) + " = ?"
+ ((where == null || where.length() == 0) ? (join2 == null ? "" : (" WHERE " + join2))
- : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
+ : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(info.getType().getSimpleName() + " update sql=" + sql);
conn.setReadOnly(false);
Blob blob = conn.createBlob();
@@ -717,7 +718,7 @@ public class DataJdbcSource extends AbstractService implements DataSource, DataC
String sql = "UPDATE " + info.getTable(node) + " a " + (join1 == null ? "" : (", " + join1))
+ " SET " + info.getSQLColumn("a", column) + " = " + info.formatToString(value)
+ ((where == null || where.length() == 0) ? (join2 == null ? "" : (" WHERE " + join2))
- : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
+ : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(info.getType().getSimpleName() + " update sql=" + sql);
conn.setReadOnly(false);
final Statement stmt = conn.createStatement();
@@ -922,7 +923,7 @@ public class DataJdbcSource extends AbstractService implements DataSource, DataC
}
String sql = "UPDATE " + info.getTable(node) + " a " + (join1 == null ? "" : (", " + join1)) + " SET " + setsql
+ ((where == null || where.length() == 0) ? (join2 == null ? "" : (" WHERE " + join2))
- : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
+ : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
//注:LIMIT 仅支持MySQL 且在多表关联式会异常, 该BUG尚未解决
sql += info.createSQLOrderby(flipper) + ((flipper == null || flipper.getLimit() < 1) ? "" : (" LIMIT " + flipper.getLimit()));
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(info.getType().getSimpleName() + " update sql=" + sql);
@@ -1108,7 +1109,7 @@ public class DataJdbcSource extends AbstractService implements DataSource, DataC
}
String sql = "UPDATE " + info.getTable(node) + " a " + (join1 == null ? "" : (", " + join1)) + " SET " + setsql
+ ((where == null || where.length() == 0) ? (join2 == null ? "" : (" WHERE " + join2))
- : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
+ : (" WHERE " + where + (join2 == null ? "" : (" AND " + join2))));
if (debug.get() && info.isLoggable(Level.FINEST)) logger.finest(info.getType().getSimpleName() + " update sql=" + sql);
conn.setReadOnly(false);
if (blobs != null) {
@@ -1893,6 +1894,60 @@ public class DataJdbcSource extends AbstractService implements DataSource, DataC
return rs;
}
+ /**
+ * 查询符合过滤条件记录的Map集合, 主键值为key
+ * 等价SQL: SELECT * FROM {table} WHERE {column} = {key} ORDER BY {flipper.sort} LIMIT {flipper.limit}
+ *
+ * @param 主键泛型
+ * @param Entity泛型
+ * @param clazz Entity类
+ * @param keyStream 主键Stream
+ *
+ * @return Entity的集合
+ */
+ @Override
+ public Map queryMap(final Class clazz, final Stream keyStream) {
+ return queryMap(clazz, null, keyStream);
+ }
+
+ @Override
+ public CompletableFuture