From 0d8f7a4fa21ca607ccde0152bbf679a54c3234bd Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Mon, 7 Nov 2016 12:28:26 +0800 Subject: [PATCH] --- .../redkale/service/DataSourceService.java | 24 +-- src/org/redkale/source/DataDefaultSource.java | 139 +++++++++++------- src/org/redkale/source/DataSource.java | 12 +- 3 files changed, 106 insertions(+), 69 deletions(-) diff --git a/src/org/redkale/service/DataSourceService.java b/src/org/redkale/service/DataSourceService.java index b69d13e07..49f0644cd 100644 --- a/src/org/redkale/service/DataSourceService.java +++ b/src/org/redkale/service/DataSourceService.java @@ -54,33 +54,33 @@ public class DataSourceService implements DataSource, Service, AutoCloseable { } @Override - public void updateColumn(final Class clazz, final Serializable id, final String column, final Serializable value) { - source.updateColumn(clazz, id, column, value); + public int updateColumn(final Class clazz, final Serializable id, final String column, final Serializable value) { + return source.updateColumn(clazz, id, column, value); } @Override - public void updateColumn(final Class clazz, final String column, final Serializable value, final FilterNode node) { - source.updateColumn(clazz, column, value, node); + public int updateColumn(final Class clazz, final String column, final Serializable value, final FilterNode node) { + return source.updateColumn(clazz, column, value, node); } @Override - public void updateColumn(final Class clazz, final Serializable id, final ColumnValue... values) { - source.updateColumn(clazz, id, values); + public int updateColumn(final Class clazz, final Serializable id, final ColumnValue... values) { + return source.updateColumn(clazz, id, values); } @Override - public void updateColumn(final Class clazz, final FilterNode node, final ColumnValue... values) { - source.updateColumn(clazz, node, values); + public int updateColumn(final Class clazz, final FilterNode node, final ColumnValue... values) { + return source.updateColumn(clazz, node, values); } @Override - public void updateColumns(T bean, final String... columns) { - source.updateColumns(bean, columns); + public int updateColumns(T bean, final String... columns) { + return source.updateColumns(bean, columns); } @Override - public void updateColumns(T bean, final FilterNode node, final String... columns) { - source.updateColumns(bean, node, columns); + public int updateColumns(T bean, final FilterNode node, final String... columns) { + return source.updateColumns(bean, node, columns); } @Override diff --git a/src/org/redkale/source/DataDefaultSource.java b/src/org/redkale/source/DataDefaultSource.java index fb17d2026..9b704d488 100644 --- a/src/org/redkale/source/DataDefaultSource.java +++ b/src/org/redkale/source/DataDefaultSource.java @@ -608,17 +608,36 @@ public final class DataDefaultSource implements DataSource, Function void updateColumn(Class clazz, Serializable id, String column, Serializable value) { + public int updateColumn(Class clazz, Serializable id, String column, Serializable value) { final EntityInfo info = loadEntityInfo(clazz); if (info.isVirtualEntity()) { - updateColumn(null, info, id, column, value); - return; + return updateColumn(null, info, id, column, value); } Connection conn = createWriteSQLConnection(); try { - updateColumn(conn, info, id, column, value); + return updateColumn(conn, info, id, column, value); } finally { closeSQLConnection(conn); } } - private void updateColumn(Connection conn, final EntityInfo info, Serializable id, String column, Serializable value) { + private int updateColumn(Connection conn, final EntityInfo info, Serializable id, String column, Serializable value) { try { + int c = -1; if (!info.isVirtualEntity()) { String sql = "UPDATE " + info.getTable(id) + " SET " + info.getSQLColumn(null, column) + " = " + info.formatToString(value) + " WHERE " + info.getPrimarySQLColumn() + " = " + FilterNode.formatToString(id); if (debug.get()) logger.finest(info.getType().getSimpleName() + " update sql=" + sql); final Statement stmt = conn.createStatement(); - stmt.execute(sql); + c = stmt.executeUpdate(sql); stmt.close(); } //--------------------------------------------------- final EntityCache cache = info.getCache(); - if (cache == null) return; + if (cache == null) return c; T rs = cache.update(id, info.getAttribute(column), value); if (cacheListener != null) cacheListener.updateCache(info.getType(), rs); + return c >= 0 ? c : (rs == null ? 0 : 1); } catch (SQLException e) { throw new RuntimeException(e); } finally { @@ -689,24 +711,26 @@ public final class DataDefaultSource implements DataSource, Function void updateColumn(Class clazz, String column, Serializable value, FilterNode node) { + public int updateColumn(Class clazz, String column, Serializable value, FilterNode node) { final EntityInfo info = loadEntityInfo(clazz); if (info.isVirtualEntity()) { - updateColumn(null, info, column, value, node); - return; + return updateColumn(null, info, column, value, node); } Connection conn = createWriteSQLConnection(); try { - updateColumn(conn, info, column, value, node); + return updateColumn(conn, info, column, value, node); } finally { closeSQLConnection(conn); } } - private void updateColumn(Connection conn, final EntityInfo info, String column, Serializable value, FilterNode node) { + private int updateColumn(Connection conn, final EntityInfo info, String column, Serializable value, FilterNode node) { try { + int c = -1; if (!info.isVirtualEntity()) { Map joinTabalis = node.getJoinTabalis(); CharSequence join = node.createSQLJoin(this, joinTabalis, info); @@ -716,14 +740,15 @@ public final class DataDefaultSource implements DataSource, Function cache = info.getCache(); - if (cache == null) return; + if (cache == null) return c; T rs = cache.updateColumn(id, attrs, cols); if (cacheListener != null) cacheListener.updateCache(info.getType(), rs); + return c >= 0 ? c : (rs == null ? 0 : 1); } catch (SQLException e) { throw new RuntimeException(e); } @@ -796,24 +824,25 @@ public final class DataDefaultSource implements DataSource, Function void updateColumn(final Class clazz, final FilterNode node, final ColumnValue... values) { + public int updateColumn(final Class clazz, final FilterNode node, final ColumnValue... values) { final EntityInfo info = loadEntityInfo(clazz); if (info.isVirtualEntity()) { - updateColumn(null, info, node, values); - return; + return updateColumn(null, info, node, values); } Connection conn = createWriteSQLConnection(); try { - updateColumn(conn, info, node, values); + return updateColumn(conn, info, node, values); } finally { closeSQLConnection(conn); } } - private void updateColumn(final Connection conn, final EntityInfo info, final FilterNode node, final ColumnValue... values) { - if (values == null || values.length < 1) return; + private int updateColumn(final Connection conn, final EntityInfo info, final FilterNode node, final ColumnValue... values) { + if (values == null || values.length < 1) return -1; try { StringBuilder setsql = new StringBuilder(); final List> attrs = new ArrayList<>(); @@ -830,6 +859,7 @@ public final class DataDefaultSource implements DataSource, Function cache = info.getCache(); - if (cache == null) return; + if (cache == null) return c; T rs = cache.update(bean, attrs); if (cacheListener != null) cacheListener.updateCache(clazz, rs); + return c >= 0 ? c : (rs == null ? 0 : 1); } catch (SQLException e) { throw new RuntimeException(e); } @@ -914,24 +948,25 @@ public final class DataDefaultSource implements DataSource, Function void updateColumns(final T bean, final FilterNode node, final String... columns) { + public int updateColumns(final T bean, final FilterNode node, final String... columns) { final EntityInfo info = loadEntityInfo((Class) bean.getClass()); if (info.isVirtualEntity()) { - updateColumns(null, info, bean, node, columns); - return; + return updateColumns(null, info, bean, node, columns); } Connection conn = createWriteSQLConnection(); try { - updateColumns(conn, info, bean, node, columns); + return updateColumns(conn, info, bean, node, columns); } finally { closeSQLConnection(conn); } } - private void updateColumns(final Connection conn, final EntityInfo info, final T bean, final FilterNode node, final String... columns) { - if (bean == null || node == null || columns.length < 1) return; + private int updateColumns(final Connection conn, final EntityInfo info, final T bean, final FilterNode node, final String... columns) { + if (bean == null || node == null || columns.length < 1) return -1; try { final Class clazz = (Class) bean.getClass(); StringBuilder setsql = new StringBuilder(); @@ -947,6 +982,7 @@ public final class DataDefaultSource implements DataSource, Function