This commit is contained in:
Redkale
2018-05-04 15:26:07 +08:00
parent 5d77139965
commit 1f28b7e803
2 changed files with 36 additions and 8 deletions

View File

@@ -33,7 +33,7 @@ public interface DataSource {
//----------------------insertAsync-----------------------------
/**
* 新增记录, 多对象必须是同一个Entity类 <br>
* 新增记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
*
* @param <T> 泛型
* @param values Entity对象
@@ -41,7 +41,7 @@ public interface DataSource {
public <T> void insert(final T... values);
/**
* 新增记录, 多对象必须是同一个Entity类 <br>
* 新增记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
*
* @param <T> 泛型
* @param values Entity对象
@@ -52,7 +52,7 @@ public interface DataSource {
//-------------------------deleteAsync--------------------------
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类 <br>
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
*
* @param <T> 泛型
@@ -63,7 +63,7 @@ public interface DataSource {
public <T> int delete(final T... values);
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类 <br>
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
*
* @param <T> 泛型
@@ -74,7 +74,7 @@ public interface DataSource {
public <T> CompletableFuture<Integer> deleteAsync(final T... values);
/**
* 删除指定主键值的记录 <br>
* 删除指定主键值的记录,多主键值必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {ids} <br>
*
* @param <T> Entity泛型
@@ -86,7 +86,7 @@ public interface DataSource {
public <T> int delete(final Class<T> clazz, final Serializable... ids);
/**
* 删除指定主键值的记录 <br>
* 删除指定主键值的记录,多主键值必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {ids} <br>
*
* @param <T> Entity泛型
@@ -151,7 +151,7 @@ public interface DataSource {
//------------------------updateAsync---------------------------
/**
* 更新记录, 多对象必须是同一个Entity类 <br>
* 更新记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: <br>
* UPDATE {table} SET column1 = value1, column2 = value2, &#183;&#183;&#183; WHERE {primary} = {id1} <br>
* UPDATE {table} SET column1 = value1, column2 = value2, &#183;&#183;&#183; WHERE {primary} = {id2} <br>
@@ -165,7 +165,7 @@ public interface DataSource {
public <T> int update(final T... values);
/**
* 更新记录, 多对象必须是同一个Entity类 <br>
* 更新记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: <br>
* UPDATE {table} SET column1 = value1, column2 = value2, &#183;&#183;&#183; WHERE {primary} = {id1} <br>
* UPDATE {table} SET column1 = value1, column2 = value2, &#183;&#183;&#183; WHERE {primary} = {id2} <br>

View File

@@ -434,6 +434,7 @@ public abstract class DataSqlSource<DBChannel> extends AbstractService implement
sql += FilterNode.formatToString(ids[i]);
}
sql += ")";
if (info.isLoggable(logger, Level.FINEST)) logger.finest(info.getType().getSimpleName() + " delete sql=" + sql);
return deleteDB(info, null, sql);
}
@@ -501,6 +502,33 @@ public abstract class DataSqlSource<DBChannel> extends AbstractService implement
}
//---------------------------- update ----------------------------
@Override
public <T> int updateCache(Class<T> clazz, T... values) {
if (values.length == 0) return 0;
final EntityInfo<T> info = loadEntityInfo(clazz);
final EntityCache<T> cache = info.getCache();
if (cache == null) return -1;
int c = 0;
for (T value : values) {
c += cache.update(value);
}
return c;
}
public <T> int reloadCache(Class<T> clazz, Serializable... ids) {
final EntityInfo<T> info = loadEntityInfo(clazz);
final EntityCache<T> cache = info.getCache();
if (cache == null) return -1;
String column = info.getPrimary().field();
int c = 0;
for (Serializable id : ids) {
Sheet<T> sheet = querySheet(false, true, clazz, null, FLIPPER_ONE, FilterNode.create(column, id)).join();
T value = sheet.isEmpty() ? null : sheet.list().get(0);
if (value != null) c += cache.update(value);
}
return c;
}
//------------------------- getNumberMap -------------------------
@Override
public <N extends Number> Map<String, N> getNumberMap(final Class entityClass, final FilterFuncColumn... columns) {