From d9a268d30a724b24064e19d61c40778498c3c875 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Sun, 11 Dec 2016 19:10:51 +0800 Subject: [PATCH] --- .../redkale/service/DataSourceService.java | 5 +++ src/org/redkale/source/DataDefaultSource.java | 37 ++++++++++++++++--- src/org/redkale/source/DataSource.java | 2 + src/org/redkale/source/EntityCache.java | 8 +++- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/org/redkale/service/DataSourceService.java b/src/org/redkale/service/DataSourceService.java index f00a1c5f4..0a46780e1 100644 --- a/src/org/redkale/service/DataSourceService.java +++ b/src/org/redkale/service/DataSourceService.java @@ -73,6 +73,11 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { return source.updateColumn(clazz, node, values); } + @Override + public int updateColumn(final Class clazz, final FilterNode node, final Flipper flipper, final ColumnValue... values) { + return source.updateColumn(clazz, node, flipper, values); + } + @Override public int updateColumns(T bean, final String... columns) { return source.updateColumns(bean, columns); diff --git a/src/org/redkale/source/DataDefaultSource.java b/src/org/redkale/source/DataDefaultSource.java index 63241d3e6..0172a97b9 100644 --- a/src/org/redkale/source/DataDefaultSource.java +++ b/src/org/redkale/source/DataDefaultSource.java @@ -853,17 +853,42 @@ public final class DataDefaultSource implements DataSource, Function int updateColumn(final Class clazz, final FilterNode node, final ColumnValue... values) { final EntityInfo info = loadEntityInfo(clazz); if (info.isVirtualEntity()) { - return updateColumn(null, info, node, values); + return updateColumn(null, info, node, null, values); } Connection conn = createWriteSQLConnection(); try { - return updateColumn(conn, info, node, values); + return updateColumn(conn, info, node, null, values); } finally { closeSQLConnection(conn); } } - private int updateColumn(final Connection conn, final EntityInfo info, final FilterNode node, final ColumnValue... values) { + /** + * 根据主键值更新对象的多个column对应的值, 必须是Entity Class + * + * @param Entity类的泛型 + * @param clazz Entity类 + * @param node 过滤条件 + * @param flipper 翻页对象 + * @param values 字段值 + * + * @return 更新的数据条数 + */ + @Override + public int updateColumn(final Class clazz, final FilterNode node, final Flipper flipper, final ColumnValue... values) { + final EntityInfo info = loadEntityInfo(clazz); + if (info.isVirtualEntity()) { + return updateColumn(null, info, node, flipper, values); + } + Connection conn = createWriteSQLConnection(); + try { + return updateColumn(conn, info, node, flipper, values); + } finally { + closeSQLConnection(conn); + } + } + + private int updateColumn(final Connection conn, final EntityInfo info, final FilterNode node, final Flipper flipper, final ColumnValue... values) { if (values == null || values.length < 1) return -1; try { StringBuilder setsql = new StringBuilder(); @@ -887,7 +912,9 @@ public final class DataDefaultSource implements DataSource, Function