format
This commit is contained in:
@@ -259,7 +259,8 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
*
|
||||
* @return EntityInfo
|
||||
*/
|
||||
protected <T> EntityInfo<T> loadEntityInfo(Class<T> clazz, final boolean cacheForbidden, final Properties props, BiFunction<DataSource, EntityInfo, CompletableFuture<List>> fullloader) {
|
||||
protected <T> EntityInfo<T> loadEntityInfo(Class<T> clazz, final boolean cacheForbidden,
|
||||
final Properties props, BiFunction<DataSource, EntityInfo, CompletableFuture<List>> fullloader) {
|
||||
return EntityInfo.load(clazz, cacheForbidden, props, this, fullloader);
|
||||
}
|
||||
|
||||
@@ -402,7 +403,8 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
}
|
||||
|
||||
@Override
|
||||
public <N extends Number> CompletableFuture<Map<String, N>> getNumberMapAsync(final Class entityClass, final FilterBean bean, final FilterFuncColumn... columns) {
|
||||
public <N extends Number> CompletableFuture<Map<String, N>> getNumberMapAsync(final Class entityClass,
|
||||
final FilterBean bean, final FilterFuncColumn... columns) {
|
||||
return getNumberMapAsync(entityClass, FilterNodeBean.createFilterNode(bean), columns);
|
||||
}
|
||||
|
||||
@@ -452,68 +454,81 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Number> getNumberResultAsync(final Class entityClass, final FilterFunc func, final Number defVal, final String column, FilterBean bean) {
|
||||
public CompletableFuture<Number> getNumberResultAsync(final Class entityClass, final FilterFunc func,
|
||||
final Number defVal, final String column, FilterBean bean) {
|
||||
return getNumberResultAsync(entityClass, func, defVal, column, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
//------------------------ queryColumnMapCompose ------------------------
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn,
|
||||
final FilterFunc func, final String funcColumn) {
|
||||
return queryColumnMap(entityClass, keyColumn, func, funcColumn, (FilterNode) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final String keyColumn, final FilterFunc func, final String funcColumn) {
|
||||
return queryColumnMapAsync(entityClass, keyColumn, func, funcColumn, (FilterNode) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn,
|
||||
final FilterFunc func, final String funcColumn, final FilterBean bean) {
|
||||
return queryColumnMap(entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final String keyColumn, final FilterFunc func, final String funcColumn, final FilterBean bean) {
|
||||
return queryColumnMapAsync(entityClass, keyColumn, func, funcColumn, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass, final ColumnNode[] funcNodes, final String groupByColumn) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String groupByColumn) {
|
||||
return queryColumnMap(entityClass, funcNodes, groupByColumn, (FilterNode) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass, final ColumnNode[] funcNodes, final String groupByColumn) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String groupByColumn) {
|
||||
return queryColumnMapAsync(entityClass, funcNodes, groupByColumn, (FilterNode) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass, final ColumnNode[] funcNodes, final String groupByColumn, final FilterBean bean) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String groupByColumn, final FilterBean bean) {
|
||||
return queryColumnMap(entityClass, funcNodes, groupByColumn, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass, final ColumnNode[] funcNodes, final String groupByColumn, final FilterBean bean) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String groupByColumn, final FilterBean bean) {
|
||||
return queryColumnMapAsync(entityClass, funcNodes, groupByColumn, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass, final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
||||
return queryColumnMap(entityClass, funcNodes, groupByColumns, (FilterNode) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass, final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
||||
return queryColumnMapAsync(entityClass, funcNodes, groupByColumns, (FilterNode) null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterBean bean) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterBean bean) {
|
||||
return queryColumnMap(entityClass, funcNodes, groupByColumns, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterBean bean) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterBean bean) {
|
||||
return queryColumnMapAsync(entityClass, funcNodes, groupByColumns, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@@ -613,7 +628,8 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> CompletableFuture<Serializable> findColumnAsync(final Class<T> clazz, final String column, final Serializable defValue, final FilterBean bean) {
|
||||
public <T> CompletableFuture<Serializable> findColumnAsync(final Class<T> clazz, final String column,
|
||||
final Serializable defValue, final FilterBean bean) {
|
||||
return findColumnAsync(clazz, column, defValue, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@@ -629,12 +645,14 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
|
||||
//-----------------------list set----------------------------
|
||||
@Override
|
||||
public <T, V extends Serializable> Set<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final String column, final Serializable colval) {
|
||||
public <T, V extends Serializable> Set<V> queryColumnSet(final String selectedColumn, final Class<T> clazz,
|
||||
final String column, final Serializable colval) {
|
||||
return queryColumnSet(selectedColumn, clazz, null, FilterNodes.create(column, colval));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn, final Class<T> clazz, final String column, final Serializable colval) {
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final String column, final Serializable colval) {
|
||||
return queryColumnSetAsync(selectedColumn, clazz, null, FilterNodes.create(column, colval));
|
||||
}
|
||||
|
||||
@@ -644,7 +662,8 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn, final Class<T> clazz, final FilterBean bean) {
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final FilterBean bean) {
|
||||
return queryColumnSetAsync(selectedColumn, clazz, null, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@@ -654,27 +673,32 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn, final Class<T> clazz, final FilterNode node) {
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final FilterNode node) {
|
||||
return queryColumnSetAsync(selectedColumn, clazz, null, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> Set<V> queryColumnSet(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
public <T, V extends Serializable> Set<V> queryColumnSet(final String selectedColumn, final Class<T> clazz,
|
||||
final Flipper flipper, final FilterBean bean) {
|
||||
return queryColumnSet(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
return queryColumnSetAsync(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final String column, final Serializable colval) {
|
||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz,
|
||||
final String column, final Serializable colval) {
|
||||
return queryColumnList(selectedColumn, clazz, null, FilterNodes.create(column, colval));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn, final Class<T> clazz, final String column, final Serializable colval) {
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final String column, final Serializable colval) {
|
||||
return queryColumnListAsync(selectedColumn, clazz, null, FilterNodes.create(column, colval));
|
||||
}
|
||||
|
||||
@@ -684,7 +708,8 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn, final Class<T> clazz, final FilterBean bean) {
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final FilterBean bean) {
|
||||
return queryColumnListAsync(selectedColumn, clazz, null, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@@ -694,17 +719,20 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn, final Class<T> clazz, final FilterNode node) {
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final FilterNode node) {
|
||||
return queryColumnListAsync(selectedColumn, clazz, null, node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz,
|
||||
final Flipper flipper, final FilterBean bean) {
|
||||
return queryColumnList(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
return queryColumnListAsync(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@@ -721,12 +749,14 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
||||
* @return 字段集合
|
||||
*/
|
||||
@Override
|
||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, Class<T> clazz,
|
||||
final Flipper flipper, final FilterBean bean) {
|
||||
return queryColumnSheet(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<Sheet<V>> queryColumnSheetAsync(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
public <T, V extends Serializable> CompletableFuture<Sheet<V>> queryColumnSheetAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final Flipper flipper, final FilterBean bean) {
|
||||
return queryColumnSheetAsync(selectedColumn, clazz, flipper, FilterNodeBean.createFilterNode(bean));
|
||||
}
|
||||
|
||||
|
||||
@@ -710,28 +710,36 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
protected abstract <T> CompletableFuture<Integer> updateColumnDBAsync(final EntityInfo<T> info, Flipper flipper, final UpdateSqlInfo sql);
|
||||
|
||||
//查询Number Map数据
|
||||
protected abstract <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBAsync(final EntityInfo<T> info, String[] tables, final String sql, final FilterNode node, final FilterFuncColumn... columns);
|
||||
protected abstract <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBAsync(final EntityInfo<T> info,
|
||||
String[] tables, final String sql, final FilterNode node, final FilterFuncColumn... columns);
|
||||
|
||||
//查询Number数据
|
||||
protected abstract <T> CompletableFuture<Number> getNumberResultDBAsync(final EntityInfo<T> info, String[] tables, final String sql, final FilterFunc func, final Number defVal, final String column, final FilterNode node);
|
||||
protected abstract <T> CompletableFuture<Number> getNumberResultDBAsync(final EntityInfo<T> info,
|
||||
String[] tables, final String sql, final FilterFunc func, final Number defVal, final String column, final FilterNode node);
|
||||
|
||||
//查询Map数据
|
||||
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBAsync(final EntityInfo<T> info, String[] tables, final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node);
|
||||
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBAsync(final EntityInfo<T> info,
|
||||
String[] tables, final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node);
|
||||
|
||||
//查询Map数据
|
||||
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBAsync(final EntityInfo<T> info, String[] tables, final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node);
|
||||
protected abstract <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBAsync(final EntityInfo<T> info,
|
||||
String[] tables, final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node);
|
||||
|
||||
//查询单条记录
|
||||
protected abstract <T> CompletableFuture<T> findDBAsync(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk, final SelectColumn selects, final Serializable pk, final FilterNode node);
|
||||
protected abstract <T> CompletableFuture<T> findDBAsync(final EntityInfo<T> info, String[] tables,
|
||||
final String sql, final boolean onlypk, final SelectColumn selects, final Serializable pk, final FilterNode node);
|
||||
|
||||
//查询单条记录的单个字段
|
||||
protected abstract <T> CompletableFuture<Serializable> findColumnDBAsync(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk, final String column, final Serializable defValue, final Serializable pk, final FilterNode node);
|
||||
protected abstract <T> CompletableFuture<Serializable> findColumnDBAsync(final EntityInfo<T> info, String[] tables,
|
||||
final String sql, final boolean onlypk, final String column, final Serializable defValue, final Serializable pk, final FilterNode node);
|
||||
|
||||
//判断记录是否存在
|
||||
protected abstract <T> CompletableFuture<Boolean> existsDBAsync(final EntityInfo<T> info, final String[] tables, final String sql, final boolean onlypk, final Serializable pk, final FilterNode node);
|
||||
protected abstract <T> CompletableFuture<Boolean> existsDBAsync(final EntityInfo<T> info, final String[] tables,
|
||||
final String sql, final boolean onlypk, final Serializable pk, final FilterNode node);
|
||||
|
||||
//查询一页数据
|
||||
protected abstract <T> CompletableFuture<Sheet<T>> querySheetDBAsync(final EntityInfo<T> info, final boolean readcache, final boolean needtotal, final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
||||
protected abstract <T> CompletableFuture<Sheet<T>> querySheetDBAsync(final EntityInfo<T> info, final boolean readcache,
|
||||
final boolean needtotal, final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node);
|
||||
|
||||
//插入纪录
|
||||
protected <T> int insertDB(final EntityInfo<T> info, T... entitys) {
|
||||
@@ -739,7 +747,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
//删除记录
|
||||
protected <T> int deleteDB(final EntityInfo<T> info, String[] tables, Flipper flipper, FilterNode node, Map<String, List<Serializable>> pkmap, final String... sqls) {
|
||||
protected <T> int deleteDB(final EntityInfo<T> info, String[] tables, Flipper flipper, FilterNode node,
|
||||
Map<String, List<Serializable>> pkmap, final String... sqls) {
|
||||
return deleteDBAsync(info, tables, flipper, node, pkmap, sqls).join();
|
||||
}
|
||||
|
||||
@@ -769,46 +778,55 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
//查询Number Map数据
|
||||
protected <T, N extends Number> Map<String, N> getNumberMapDB(final EntityInfo<T> info, String[] tables, final String sql, final FilterNode node, final FilterFuncColumn... columns) {
|
||||
protected <T, N extends Number> Map<String, N> getNumberMapDB(final EntityInfo<T> info, String[] tables,
|
||||
final String sql, final FilterNode node, final FilterFuncColumn... columns) {
|
||||
return (Map) getNumberMapDBAsync(info, tables, sql, node, columns).join();
|
||||
}
|
||||
|
||||
//查询Number数据
|
||||
protected <T> Number getNumberResultDB(final EntityInfo<T> info, String[] tables, final String sql, final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||
protected <T> Number getNumberResultDB(final EntityInfo<T> info, String[] tables, final String sql,
|
||||
final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||
return getNumberResultDBAsync(info, tables, sql, func, defVal, column, node).join();
|
||||
}
|
||||
|
||||
//查询Map数据
|
||||
protected <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMapDB(final EntityInfo<T> info, String[] tables, final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
protected <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMapDB(final EntityInfo<T> info, String[] tables,
|
||||
final String sql, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
return (Map) queryColumnMapDBAsync(info, tables, sql, keyColumn, func, funcColumn, node).join();
|
||||
}
|
||||
|
||||
//查询Map数据
|
||||
protected <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMapDB(final EntityInfo<T> info, String[] tables, final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
protected <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMapDB(final EntityInfo<T> info, String[] tables,
|
||||
final String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
return (Map) queryColumnMapDBAsync(info, tables, sql, funcNodes, groupByColumns, node).join();
|
||||
}
|
||||
|
||||
//查询单条记录
|
||||
protected <T> T findDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk, final SelectColumn selects, final Serializable pk, final FilterNode node) {
|
||||
protected <T> T findDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk,
|
||||
final SelectColumn selects, final Serializable pk, final FilterNode node) {
|
||||
return findDBAsync(info, tables, sql, onlypk, selects, pk, node).join();
|
||||
}
|
||||
|
||||
//查询单条记录的单个字段
|
||||
protected <T> Serializable findColumnDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk, final String column, final Serializable defValue, final Serializable pk, final FilterNode node) {
|
||||
protected <T> Serializable findColumnDB(final EntityInfo<T> info, String[] tables, final String sql, final boolean onlypk,
|
||||
final String column, final Serializable defValue, final Serializable pk, final FilterNode node) {
|
||||
return findColumnDBAsync(info, tables, sql, onlypk, column, defValue, pk, node).join();
|
||||
}
|
||||
|
||||
//判断记录是否存在
|
||||
protected <T> boolean existsDB(final EntityInfo<T> info, final String[] tables, final String sql, final boolean onlypk, final Serializable pk, final FilterNode node) {
|
||||
protected <T> boolean existsDB(final EntityInfo<T> info, final String[] tables, final String sql, final boolean onlypk,
|
||||
final Serializable pk, final FilterNode node) {
|
||||
return existsDBAsync(info, tables, sql, onlypk, pk, node).join();
|
||||
}
|
||||
|
||||
//查询一页数据
|
||||
protected <T> Sheet<T> querySheetDB(final EntityInfo<T> info, final boolean readcache, final boolean needtotal, final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||
protected <T> Sheet<T> querySheetDB(final EntityInfo<T> info, final boolean readcache, final boolean needtotal,
|
||||
final boolean distinct, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||
return querySheetDBAsync(info, readcache, needtotal, distinct, selects, flipper, node).join();
|
||||
}
|
||||
|
||||
protected <T> CharSequence createSQLJoin(FilterNode node, final Function<Class, EntityInfo> func, final boolean update, final Map<Class, String> joinTabalis, final Set<String> haset, final EntityInfo<T> info) {
|
||||
protected <T> CharSequence createSQLJoin(FilterNode node, final Function<Class, EntityInfo> func, final boolean update,
|
||||
final Map<Class, String> joinTabalis, final Set<String> haset, final EntityInfo<T> info) {
|
||||
return node == null ? null : node.createSQLJoin(func, update, joinTabalis, haset, info);
|
||||
}
|
||||
|
||||
@@ -869,7 +887,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return new StringBuilder().append('\'').append(value.toString().replace("\\", "\\\\").replace("'", "\\'")).append('\'').toString();
|
||||
} else if (!(value instanceof Number) && !(value instanceof java.util.Date)
|
||||
&& !value.getClass().getName().startsWith("java.sql.") && !value.getClass().getName().startsWith("java.time.")) {
|
||||
return new StringBuilder().append('\'').append(info.getJsonConvert().convertTo(value).replace("\\", "\\\\").replace("'", "\\'")).append('\'').toString();
|
||||
return new StringBuilder().append('\'').append(info.getJsonConvert().convertTo(value)
|
||||
.replace("\\", "\\\\").replace("'", "\\'")).append('\'').toString();
|
||||
}
|
||||
return String.valueOf(value);
|
||||
} else if (value != null && value instanceof CharSequence && "postgresql".equals(dbtype)) {
|
||||
@@ -1162,7 +1181,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
if ("postgresql".equals(dbtype()) && flipper != null && flipper.getLimit() > 0) {
|
||||
List<String> sqls = new ArrayList<>();
|
||||
for (String table : tables) {
|
||||
String sql = "DELETE FROM " + table + " a" + (join1 == null ? "" : (", " + join1)) + " WHERE " + info.getPrimarySQLColumn() + " IN (SELECT " + info.getPrimaryField() + " FROM " + table
|
||||
String sql = "DELETE FROM " + table + " a" + (join1 == null ? "" : (", " + join1))
|
||||
+ " WHERE " + info.getPrimarySQLColumn() + " IN (SELECT " + info.getPrimaryField() + " FROM " + table
|
||||
+ join2AndWhere + info.createSQLOrderby(flipper) + " OFFSET 0 LIMIT " + flipper.getLimit() + ")";
|
||||
sqls.add(sql);
|
||||
}
|
||||
@@ -1171,7 +1191,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
boolean mysql = "mysql".equals(dbtype());
|
||||
List<String> sqls = new ArrayList<>();
|
||||
for (String table : tables) {
|
||||
String sql = "DELETE " + (mysql ? "a" : "") + " FROM " + table + " a" + (join1 == null ? "" : (", " + join1)) + join2AndWhere + info.createSQLOrderby(flipper)
|
||||
String sql = "DELETE " + (mysql ? "a" : "") + " FROM " + table + " a"
|
||||
+ (join1 == null ? "" : (", " + join1)) + join2AndWhere + info.createSQLOrderby(flipper)
|
||||
+ ((mysql && flipper != null && flipper.getLimit() > 0) ? (" LIMIT " + flipper.getLimit()) : "");
|
||||
sqls.add(sql);
|
||||
}
|
||||
@@ -1537,10 +1558,12 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
Attribute attr = info.getAttribute(column);
|
||||
Serializable val = getSQLAttrValue(info, attr, colval);
|
||||
if (val instanceof byte[]) {
|
||||
return new UpdateSqlInfo(true, "UPDATE " + info.getTable(pk) + " SET " + info.getSQLColumn(null, column) + "=" + prepareParamSign(1) + " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter), (byte[]) val);
|
||||
return new UpdateSqlInfo(true, "UPDATE " + info.getTable(pk) + " SET " + info.getSQLColumn(null, column) + "=" + prepareParamSign(1)
|
||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter), (byte[]) val);
|
||||
} else {
|
||||
return new UpdateSqlInfo(false, "UPDATE " + info.getTable(pk) + " SET " + info.getSQLColumn(null, column) + "="
|
||||
+ info.formatSQLValue(column, val, sqlFormatter) + " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter));
|
||||
+ info.formatSQLValue(column, val, sqlFormatter)
|
||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1722,7 +1745,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
if (setsql.length() < 1) {
|
||||
throw new SourceException("update non column-value array");
|
||||
}
|
||||
String sql = "UPDATE " + info.getTable(pk) + " SET " + setsql + " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
||||
String sql = "UPDATE " + info.getTable(pk) + " SET " + setsql
|
||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
||||
return new UpdateSqlInfo(false, sql, blobs);
|
||||
}
|
||||
|
||||
@@ -1977,7 +2001,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
}
|
||||
|
||||
protected <T> UpdateSqlInfo updateColumnSql(final EntityInfo<T> info, final boolean needNode, final T entity, final FilterNode node, final SelectColumn selects) {
|
||||
protected <T> UpdateSqlInfo updateColumnSql(final EntityInfo<T> info, boolean needNode, T entity, FilterNode node, final SelectColumn selects) {
|
||||
StringBuilder setsql = new StringBuilder();
|
||||
List<byte[]> blobs = null;
|
||||
int index = 0;
|
||||
@@ -2171,7 +2195,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <N extends Number> CompletableFuture<Map<String, N>> getNumberMapAsync(final Class entityClass, final FilterNode node, final FilterFuncColumn... columns) {
|
||||
public <N extends Number> CompletableFuture<Map<String, N>> getNumberMapAsync(Class entityClass, FilterNode node, FilterFuncColumn... columns) {
|
||||
final EntityInfo info = loadEntityInfo(entityClass);
|
||||
final EntityCache cache = info.getCache();
|
||||
if (cache != null && (isOnlyCache(info) || cache.isFullLoaded())) {
|
||||
@@ -2216,7 +2240,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future, FilterFuncColumn... columns) {
|
||||
protected <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBApply(EntityInfo<T> info,
|
||||
CompletableFuture<? extends DataResultSet> future, FilterFuncColumn... columns) {
|
||||
return future.thenApply((DataResultSet dataset) -> {
|
||||
final Map map = new HashMap<>();
|
||||
if (dataset.next()) {
|
||||
@@ -2239,7 +2264,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
|
||||
//------------------------ getNumberResultCompose -----------------------
|
||||
@Override
|
||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||
public Number getNumberResult(final Class entityClass, final FilterFunc func, final Number defVal,
|
||||
final String column, final FilterNode node) {
|
||||
final EntityInfo<?> info = loadEntityInfo(entityClass);
|
||||
final EntityCache cache = info.getCache();
|
||||
if (cache != null && (isOnlyCache(info) || cache.isFullLoaded())) {
|
||||
@@ -2261,7 +2287,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Number> getNumberResultAsync(final Class entityClass, final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||
public CompletableFuture<Number> getNumberResultAsync(final Class entityClass, final FilterFunc func,
|
||||
final Number defVal, final String column, final FilterNode node) {
|
||||
final EntityInfo info = loadEntityInfo(entityClass);
|
||||
final EntityCache cache = info.getCache();
|
||||
if (cache != null && (isOnlyCache(info) || cache.isFullLoaded())) {
|
||||
@@ -2281,7 +2308,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
}
|
||||
|
||||
protected <T> String getNumberResultSql(final EntityInfo<T> info, final Class entityClass, final String[] tables, final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||
protected <T> String getNumberResultSql(final EntityInfo<T> info, final Class entityClass,
|
||||
final String[] tables, final FilterFunc func, final Number defVal, final String column, final FilterNode node) {
|
||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||
final Set<String> haset = new HashSet<>();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, false, joinTabalis, haset, info);
|
||||
@@ -2291,7 +2319,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected <T> CompletableFuture<Number> getNumberResultDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future, Number defVal, String column) {
|
||||
protected <T> CompletableFuture<Number> getNumberResultDBApply(EntityInfo<T> info,
|
||||
CompletableFuture<? extends DataResultSet> future, Number defVal, String column) {
|
||||
return future.thenApply((DataResultSet dataset) -> {
|
||||
Number rs = defVal;
|
||||
if (dataset.next()) {
|
||||
@@ -2307,7 +2336,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
|
||||
//------------------------ queryColumnMapCompose ------------------------
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMap(final Class<T> entityClass,
|
||||
final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
final EntityInfo info = loadEntityInfo(entityClass);
|
||||
final EntityCache cache = info.getCache();
|
||||
if (cache != null && (isOnlyCache(info) || cache.isFullLoaded())) {
|
||||
@@ -2329,7 +2359,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
final EntityInfo info = loadEntityInfo(entityClass);
|
||||
final EntityCache cache = info.getCache();
|
||||
if (cache != null && (isOnlyCache(info) || cache.isFullLoaded())) {
|
||||
@@ -2349,13 +2380,15 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
}
|
||||
|
||||
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final String keyColumn, final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final String keyColumn,
|
||||
final FilterFunc func, final String funcColumn, FilterNode node) {
|
||||
final String keySqlColumn = info.getSQLColumn(null, keyColumn);
|
||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||
final Set<String> haset = new HashSet<>();
|
||||
final CharSequence join = node == null ? null : node.createSQLJoin(this, false, joinTabalis, haset, info);
|
||||
final CharSequence where = node == null ? null : node.createSQLExpress(this, info, joinTabalis);
|
||||
final String funcSqlColumn = func == null ? info.getSQLColumn("a", funcColumn) : func.getColumn((funcColumn == null || funcColumn.isEmpty() ? "*" : info.getSQLColumn("a", funcColumn)));
|
||||
final String funcSqlColumn = func == null ? info.getSQLColumn("a", funcColumn)
|
||||
: func.getColumn((funcColumn == null || funcColumn.isEmpty() ? "*" : info.getSQLColumn("a", funcColumn)));
|
||||
|
||||
String joinAndWhere = (join == null ? "" : join) + ((where == null || where.length() == 0) ? "" : (" WHERE " + where));
|
||||
String sql;
|
||||
@@ -2376,7 +2409,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future, final String keyColumn) {
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBApply(EntityInfo<T> info,
|
||||
CompletableFuture<? extends DataResultSet> future, final String keyColumn) {
|
||||
return future.thenApply((DataResultSet dataset) -> {
|
||||
Map<K, N> rs = new LinkedHashMap<>();
|
||||
while (dataset.next()) {
|
||||
@@ -2388,7 +2422,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass, final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K, N[]> queryColumnMap(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
||||
Map<K[], N[]> map = queryColumnMap(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
|
||||
final Map<K, N[]> rs = new LinkedHashMap<>();
|
||||
map.forEach((keys, values) -> rs.put(keys[0], values));
|
||||
@@ -2396,7 +2431,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass, final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String groupByColumn, final FilterNode node) {
|
||||
CompletableFuture<Map<K[], N[]>> future = queryColumnMapAsync(entityClass, funcNodes, Utility.ofArray(groupByColumn), node);
|
||||
return future.thenApply(map -> {
|
||||
final Map<K, N[]> rs = new LinkedHashMap<>();
|
||||
@@ -2406,7 +2442,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
public <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMap(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
final EntityInfo info = loadEntityInfo(entityClass);
|
||||
final EntityCache cache = info.getCache();
|
||||
if (cache != null && (isOnlyCache(info) || cache.isFullLoaded())) {
|
||||
@@ -2427,7 +2464,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
public <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapAsync(final Class<T> entityClass,
|
||||
final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
final EntityInfo info = loadEntityInfo(entityClass);
|
||||
final EntityCache cache = info.getCache();
|
||||
if (cache != null && (isOnlyCache(info) || cache.isFullLoaded())) {
|
||||
@@ -2447,7 +2485,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
}
|
||||
|
||||
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
protected <T> String queryColumnMapSql(final EntityInfo<T> info, final String[] tables, final ColumnNode[] funcNodes,
|
||||
final String[] groupByColumns, final FilterNode node) {
|
||||
final StringBuilder groupBySqlColumns = new StringBuilder();
|
||||
if (groupByColumns != null && groupByColumns.length > 0) {
|
||||
for (int i = 0; i < groupByColumns.length; i++) {
|
||||
@@ -2506,7 +2545,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future, final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBApply(EntityInfo<T> info,
|
||||
CompletableFuture<? extends DataResultSet> future, final ColumnNode[] funcNodes, final String[] groupByColumns) {
|
||||
return future.thenApply((DataResultSet dataset) -> {
|
||||
Map rs = new LinkedHashMap<>();
|
||||
while (dataset.next()) {
|
||||
@@ -2644,7 +2684,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
|
||||
protected <T> String findSql(final EntityInfo<T> info, final SelectColumn selects, Serializable pk) {
|
||||
String column = info.getPrimarySQLColumn();
|
||||
final String sql = "SELECT " + info.getQueryColumns(null, selects) + " FROM " + info.getTable(pk) + " WHERE " + column + "=" + info.formatSQLValue(column, pk, sqlFormatter);
|
||||
final String sql = "SELECT " + info.getQueryColumns(null, selects) + " FROM " + info.getTable(pk)
|
||||
+ " WHERE " + column + "=" + info.formatSQLValue(column, pk, sqlFormatter);
|
||||
return sql;
|
||||
}
|
||||
|
||||
@@ -2707,7 +2748,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected <T> CompletableFuture<T> findDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future, boolean onlypk, SelectColumn selects) {
|
||||
protected <T> CompletableFuture<T> findDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future,
|
||||
boolean onlypk, SelectColumn selects) {
|
||||
return future.thenApply((DataResultSet pgset) -> {
|
||||
T rs = pgset.next() ? (onlypk && selects == null ? getEntityValue(info, null, pgset) : getEntityValue(info, selects, pgset)) : null;
|
||||
pgset.close();
|
||||
@@ -2760,7 +2802,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
protected <T> String findColumnSql(final EntityInfo<T> info, String column, final Serializable defValue, final Serializable pk) {
|
||||
return "SELECT " + info.getSQLColumn(null, column) + " FROM " + info.getTable(pk) + " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
||||
return "SELECT " + info.getSQLColumn(null, column) + " FROM " + info.getTable(pk)
|
||||
+ " WHERE " + info.getPrimarySQLColumn() + "=" + info.formatSQLValue(info.getPrimarySQLColumn(), pk, sqlFormatter);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -2828,7 +2871,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected <T> CompletableFuture<Serializable> findColumnDBApply(EntityInfo<T> info, CompletableFuture<? extends DataResultSet> future, boolean onlypk, String column, Serializable defValue) {
|
||||
protected <T> CompletableFuture<Serializable> findColumnDBApply(EntityInfo<T> info,
|
||||
CompletableFuture<? extends DataResultSet> future, boolean onlypk, String column, Serializable defValue) {
|
||||
return future.thenApply((DataResultSet dataset) -> {
|
||||
Serializable val = defValue;
|
||||
if (dataset.next()) {
|
||||
@@ -2980,7 +3024,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
public <T, V extends Serializable> CompletableFuture<Set<V>> queryColumnSetAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
return querySetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Set<T> list) -> {
|
||||
final Set<V> rs = new LinkedHashSet<>();
|
||||
if (list.isEmpty()) {
|
||||
@@ -2996,7 +3041,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
public <T, V extends Serializable> List<V> queryColumnList(final String selectedColumn, final Class<T> clazz,
|
||||
final Flipper flipper, final FilterNode node) {
|
||||
final List<T> list = queryList(clazz, SelectColumn.includes(selectedColumn), flipper, node);
|
||||
final List<V> rs = new ArrayList<>();
|
||||
if (list.isEmpty()) {
|
||||
@@ -3011,7 +3057,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
public <T, V extends Serializable> CompletableFuture<List<V>> queryColumnListAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
return queryListAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((List<T> list) -> {
|
||||
final List<V> rs = new ArrayList<>();
|
||||
if (list.isEmpty()) {
|
||||
@@ -3027,7 +3074,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
public <T, V extends Serializable> Sheet<V> queryColumnSheet(final String selectedColumn, final Class<T> clazz,
|
||||
final Flipper flipper, final FilterNode node) {
|
||||
Sheet<T> sheet = querySheet(clazz, SelectColumn.includes(selectedColumn), flipper, node);
|
||||
final Sheet<V> rs = new Sheet<>();
|
||||
if (sheet.isEmpty()) {
|
||||
@@ -3045,7 +3093,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, V extends Serializable> CompletableFuture<Sheet<V>> queryColumnSheetAsync(final String selectedColumn, final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
public <T, V extends Serializable> CompletableFuture<Sheet<V>> queryColumnSheetAsync(final String selectedColumn,
|
||||
final Class<T> clazz, final Flipper flipper, final FilterNode node) {
|
||||
return querySheetAsync(clazz, SelectColumn.includes(selectedColumn), flipper, node).thenApply((Sheet<T> sheet) -> {
|
||||
final Sheet<V> rs = new Sheet<>();
|
||||
if (sheet.isEmpty()) {
|
||||
@@ -3094,7 +3143,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz, final SelectColumn selects, final Stream<K> keyStream) {
|
||||
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz,
|
||||
final SelectColumn selects, final Stream<K> keyStream) {
|
||||
if (keyStream == null) {
|
||||
return CompletableFuture.completedFuture(new LinkedHashMap<>());
|
||||
}
|
||||
@@ -3140,7 +3190,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz, final SelectColumn selects, final FilterNode node) {
|
||||
public <K extends Serializable, T> CompletableFuture<Map<K, T>> queryMapAsync(final Class<T> clazz,
|
||||
final SelectColumn selects, final FilterNode node) {
|
||||
return queryListAsync(clazz, selects, node).thenApply((List<T> rs) -> {
|
||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||
final Attribute<T, Serializable> primary = info.getPrimary();
|
||||
@@ -3209,7 +3260,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
}
|
||||
}
|
||||
|
||||
protected <T> Sheet<T> querySheet(final boolean readCache, final boolean needTotal, final boolean distinct, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||
protected <T> Sheet<T> querySheet(final boolean readCache, final boolean needTotal, final boolean distinct,
|
||||
final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||
final EntityCache<T> cache = info.getCache();
|
||||
if (readCache && cache != null && cache.isFullLoaded()) {
|
||||
@@ -3223,7 +3275,8 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
||||
return querySheetDB(info, readCache, needTotal, distinct, selects, flipper, node);
|
||||
}
|
||||
|
||||
protected <T> CompletableFuture<Sheet<T>> querySheetAsync(final boolean readCache, final boolean needTotal, final boolean distinct, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||
protected <T> CompletableFuture<Sheet<T>> querySheetAsync(final boolean readCache, final boolean needTotal,
|
||||
final boolean distinct, final Class<T> clazz, final SelectColumn selects, final Flipper flipper, final FilterNode node) {
|
||||
final EntityInfo<T> info = loadEntityInfo(clazz);
|
||||
final EntityCache<T> cache = info.getCache();
|
||||
if (readCache && cache != null && cache.isFullLoaded()) {
|
||||
|
||||
@@ -147,7 +147,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected <T> List<PreparedStatement> prepareInsertEntityStatements(JdbcConnection conn,
|
||||
protected <T> List<PreparedStatement> prepareInsertEntityStatements(JdbcConnection conn,
|
||||
EntityInfo<T> info, Map<String, PrepareInfo<T>> prepareInfos, T... entitys) throws SQLException {
|
||||
Attribute<T, Serializable>[] attrs = info.insertAttributes;
|
||||
final List<PreparedStatement> prestmts = new ArrayList<>();
|
||||
@@ -165,7 +165,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
return prestmts;
|
||||
}
|
||||
|
||||
protected <T> PreparedStatement prepareInsertEntityStatement(JdbcConnection conn, String sql,
|
||||
protected <T> PreparedStatement prepareInsertEntityStatement(JdbcConnection conn, String sql,
|
||||
EntityInfo<T> info, T... entitys) throws SQLException {
|
||||
Attribute<T, Serializable>[] attrs = info.insertAttributes;
|
||||
final PreparedStatement prestmt = info.isAutoGenerated()
|
||||
@@ -178,7 +178,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
return prestmt;
|
||||
}
|
||||
|
||||
protected <T> List<PreparedStatement> prepareUpdateEntityStatements(JdbcConnection conn,
|
||||
protected <T> List<PreparedStatement> prepareUpdateEntityStatements(JdbcConnection conn,
|
||||
EntityInfo<T> info, Map<String, PrepareInfo<T>> prepareInfos, T... entitys) throws SQLException {
|
||||
Attribute<T, Serializable> primary = info.primary;
|
||||
Attribute<T, Serializable>[] attrs = info.updateAttributes;
|
||||
@@ -196,7 +196,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
return prestmts;
|
||||
}
|
||||
|
||||
protected <T> PreparedStatement prepareUpdateEntityStatement(JdbcConnection conn,
|
||||
protected <T> PreparedStatement prepareUpdateEntityStatement(JdbcConnection conn,
|
||||
String prepareSQL, EntityInfo<T> info, T... entitys) throws SQLException {
|
||||
Attribute<T, Serializable> primary = info.primary;
|
||||
Attribute<T, Serializable>[] attrs = info.updateAttributes;
|
||||
@@ -209,7 +209,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
return prestmt;
|
||||
}
|
||||
|
||||
protected <T> int bindStatementParameters(JdbcConnection conn, PreparedStatement prestmt,
|
||||
protected <T> int bindStatementParameters(JdbcConnection conn, PreparedStatement prestmt,
|
||||
EntityInfo<T> info, Attribute<T, Serializable>[] attrs, T entity) throws SQLException {
|
||||
int i = 0;
|
||||
for (Attribute<T, Serializable> attr : attrs) {
|
||||
@@ -484,7 +484,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
try {
|
||||
stmt = conn.createUpdateStatement();
|
||||
for (String newCatalog : newCatalogs) {
|
||||
stmt.addBatch(("postgresql".equals(dbtype())
|
||||
stmt.addBatch(("postgresql".equals(dbtype())
|
||||
? "CREATE SCHEMA IF NOT EXISTS "
|
||||
: "CREATE DATABASE IF NOT EXISTS ") + newCatalog);
|
||||
}
|
||||
@@ -655,13 +655,13 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> CompletableFuture<Integer> deleteDBAsync(final EntityInfo<T> info, String[] tables,
|
||||
protected <T> CompletableFuture<Integer> deleteDBAsync(final EntityInfo<T> info, String[] tables,
|
||||
Flipper flipper, FilterNode node, Map<String, List<Serializable>> pkmap, final String... sqls) {
|
||||
return supplyAsync(() -> deleteDB(info, tables, flipper, node, pkmap, sqls));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> int deleteDB(EntityInfo<T> info, String[] tables, Flipper flipper,
|
||||
protected <T> int deleteDB(EntityInfo<T> info, String[] tables, Flipper flipper,
|
||||
FilterNode node, Map<String, List<Serializable>> pkmap, String... sqls) {
|
||||
JdbcConnection conn = null;
|
||||
List<Statement> stmtsRef = new ArrayList<>();
|
||||
@@ -679,7 +679,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
}
|
||||
|
||||
private <T> int deleteDBStatement(List<Statement> stmtsRef, final JdbcConnection conn, final EntityInfo<T> info,
|
||||
private <T> int deleteDBStatement(List<Statement> stmtsRef, final JdbcConnection conn, final EntityInfo<T> info,
|
||||
String[] tables, Flipper flipper, FilterNode node, Map<String, List<Serializable>> pkmap, String... sqls) throws SQLException {
|
||||
final long s = System.currentTimeMillis();
|
||||
Statement stmt = null;
|
||||
@@ -741,7 +741,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
}
|
||||
if (logger.isLoggable(Level.FINE)) {
|
||||
logger.log(Level.FINE, "delete, old-tables: " + Arrays.toString(oldTables)
|
||||
logger.log(Level.FINE, "delete, old-tables: " + Arrays.toString(oldTables)
|
||||
+ ", new-tables: " + (pkmap != null ? pkmap.keySet() : Arrays.toString(tables)));
|
||||
}
|
||||
if ((pkmap != null ? pkmap.size() : tables.length) == 0) { //分表全部不存在
|
||||
@@ -918,8 +918,8 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
c = stmt.executeUpdate(copyTableSql);
|
||||
} else { //需要先建库
|
||||
String newCatalog = newTable.substring(0, newTable.indexOf('.'));
|
||||
String catalogSql = ("postgresql".equals(dbtype())
|
||||
? "CREATE SCHEMA IF NOT EXISTS "
|
||||
String catalogSql = ("postgresql".equals(dbtype())
|
||||
? "CREATE SCHEMA IF NOT EXISTS "
|
||||
: "CREATE DATABASE IF NOT EXISTS ") + newCatalog;
|
||||
try {
|
||||
if (info.isLoggable(logger, Level.FINEST, catalogSql)) {
|
||||
@@ -1258,9 +1258,9 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
}
|
||||
|
||||
private <T> int updateColumnDBStatement(List<Statement> stmtsRef, final JdbcConnection conn,
|
||||
private <T> int updateColumnDBStatement(List<Statement> stmtsRef, final JdbcConnection conn,
|
||||
final EntityInfo<T> info, Flipper flipper, UpdateSqlInfo sql) throws SQLException { //String sql, boolean prepared, Object... blobs) {
|
||||
|
||||
|
||||
final long s = System.currentTimeMillis();
|
||||
int c = -1;
|
||||
String firstTable = null;
|
||||
@@ -1370,7 +1370,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
sql.tables = Utility.remove(sql.tables, t);
|
||||
}
|
||||
if (logger.isLoggable(Level.FINE)) {
|
||||
logger.log(Level.FINE, "updateColumn, old-tables: " + Arrays.toString(oldTables)
|
||||
logger.log(Level.FINE, "updateColumn, old-tables: " + Arrays.toString(oldTables)
|
||||
+ ", new-tables: " + Arrays.toString(sql.tables));
|
||||
}
|
||||
if (sql.tables.length == 0) { //分表全部不存在
|
||||
@@ -1413,13 +1413,13 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBAsync(EntityInfo<T> info,
|
||||
protected <T, N extends Number> CompletableFuture<Map<String, N>> getNumberMapDBAsync(EntityInfo<T> info,
|
||||
String[] tables, String sql, FilterNode node, FilterFuncColumn... columns) {
|
||||
return supplyAsync(() -> getNumberMapDB(info, tables, sql, node, columns));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T, N extends Number> Map<String, N> getNumberMapDB(EntityInfo<T> info,
|
||||
protected <T, N extends Number> Map<String, N> getNumberMapDB(EntityInfo<T> info,
|
||||
String[] tables, String sql, FilterNode node, FilterFuncColumn... columns) {
|
||||
JdbcConnection conn = null;
|
||||
final Map map = new HashMap<>();
|
||||
@@ -1517,13 +1517,13 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> CompletableFuture<Number> getNumberResultDBAsync(EntityInfo<T> info, String[] tables,
|
||||
protected <T> CompletableFuture<Number> getNumberResultDBAsync(EntityInfo<T> info, String[] tables,
|
||||
String sql, FilterFunc func, Number defVal, String column, FilterNode node) {
|
||||
return supplyAsync(() -> getNumberResultDB(info, tables, sql, func, defVal, column, node));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> Number getNumberResultDB(EntityInfo<T> info, String[] tables,
|
||||
protected <T> Number getNumberResultDB(EntityInfo<T> info, String[] tables,
|
||||
String sql, FilterFunc func, Number defVal, String column, FilterNode node) {
|
||||
JdbcConnection conn = null;
|
||||
final long s = System.currentTimeMillis();
|
||||
@@ -1608,13 +1608,13 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBAsync(EntityInfo<T> info,
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K, N>> queryColumnMapDBAsync(EntityInfo<T> info,
|
||||
String[] tables, String sql, String keyColumn, FilterFunc func, String funcColumn, FilterNode node) {
|
||||
return supplyAsync(() -> queryColumnMapDB(info, tables, sql, keyColumn, func, funcColumn, node));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMapDB(EntityInfo<T> info, String[] tables,
|
||||
protected <T, K extends Serializable, N extends Number> Map<K, N> queryColumnMapDB(EntityInfo<T> info, String[] tables,
|
||||
String sql, String keyColumn, FilterFunc func, String funcColumn, FilterNode node) {
|
||||
JdbcConnection conn = null;
|
||||
final long s = System.currentTimeMillis();
|
||||
@@ -1696,13 +1696,13 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBAsync(EntityInfo<T> info,
|
||||
protected <T, K extends Serializable, N extends Number> CompletableFuture<Map<K[], N[]>> queryColumnMapDBAsync(EntityInfo<T> info,
|
||||
String[] tables, String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
return supplyAsync(() -> queryColumnMapDB(info, tables, sql, funcNodes, groupByColumns, node));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMapDB(EntityInfo<T> info, String[] tables,
|
||||
protected <T, K extends Serializable, N extends Number> Map<K[], N[]> queryColumnMapDB(EntityInfo<T> info, String[] tables,
|
||||
String sql, final ColumnNode[] funcNodes, final String[] groupByColumns, final FilterNode node) {
|
||||
JdbcConnection conn = null;
|
||||
Map rs = new LinkedHashMap<>();
|
||||
@@ -1843,13 +1843,13 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> CompletableFuture<T> findDBAsync(EntityInfo<T> info, String[] tables, String sql, boolean onlypk,
|
||||
protected <T> CompletableFuture<T> findDBAsync(EntityInfo<T> info, String[] tables, String sql, boolean onlypk,
|
||||
SelectColumn selects, Serializable pk, FilterNode node) {
|
||||
return supplyAsync(() -> findDB(info, tables, sql, onlypk, selects, pk, node));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> T findDB(EntityInfo<T> info, String[] tables, String sql, boolean onlypk,
|
||||
protected <T> T findDB(EntityInfo<T> info, String[] tables, String sql, boolean onlypk,
|
||||
SelectColumn selects, Serializable pk, FilterNode node) {
|
||||
JdbcConnection conn = null;
|
||||
final long s = System.currentTimeMillis();
|
||||
@@ -1923,13 +1923,13 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> CompletableFuture<Serializable> findColumnDBAsync(EntityInfo<T> info, final String[] tables,
|
||||
protected <T> CompletableFuture<Serializable> findColumnDBAsync(EntityInfo<T> info, final String[] tables,
|
||||
String sql, boolean onlypk, String column, Serializable defValue, Serializable pk, FilterNode node) {
|
||||
return supplyAsync(() -> findColumnDB(info, tables, sql, onlypk, column, defValue, pk, node));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> Serializable findColumnDB(EntityInfo<T> info, String[] tables,
|
||||
protected <T> Serializable findColumnDB(EntityInfo<T> info, String[] tables,
|
||||
String sql, boolean onlypk, String column, Serializable defValue, Serializable pk, FilterNode node) {
|
||||
JdbcConnection conn = null;
|
||||
final long s = System.currentTimeMillis();
|
||||
@@ -2012,7 +2012,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> CompletableFuture<Boolean> existsDBAsync(EntityInfo<T> info, final String[] tables,
|
||||
protected <T> CompletableFuture<Boolean> existsDBAsync(EntityInfo<T> info, final String[] tables,
|
||||
String sql, boolean onlypk, Serializable pk, FilterNode node) {
|
||||
return supplyAsync(() -> existsDB(info, tables, sql, onlypk, pk, node));
|
||||
}
|
||||
@@ -2187,7 +2187,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> Sheet<T> querySheetDB(EntityInfo<T> info, final boolean readCache, boolean needTotal,
|
||||
protected <T> Sheet<T> querySheetDB(EntityInfo<T> info, final boolean readCache, boolean needTotal,
|
||||
final boolean distinct, SelectColumn selects, Flipper flipper, FilterNode node) {
|
||||
if (!needTotal && !distinct && selects == null && flipper == null && node == null && info.getTableStrategy() == null) {
|
||||
return querySheetFullListDB(info);
|
||||
@@ -2363,7 +2363,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
} else {
|
||||
if (readCache && info.isLoggable(logger, Level.FINEST, listSql)) {
|
||||
logger.finest(info.getType().getSimpleName() + " query sql=" + listSql
|
||||
logger.finest(info.getType().getSimpleName() + " query sql=" + listSql
|
||||
+ (flipper == null || flipper.getLimit() < 1 ? "" : (" LIMIT " + flipper.getLimit() + " OFFSET " + flipper.getOffset())));
|
||||
}
|
||||
}
|
||||
@@ -2670,7 +2670,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
|
||||
@Override
|
||||
public <V> CompletableFuture<V> nativeQueryAsync(String sql, BiConsumer<Object, Object> consumer,
|
||||
public <V> CompletableFuture<V> nativeQueryAsync(String sql, BiConsumer<Object, Object> consumer,
|
||||
Function<DataResultSet, V> handler, Map<String, Object> params) {
|
||||
return supplyAsync(() -> nativeQuery(sql, consumer, handler, params));
|
||||
}
|
||||
@@ -2950,7 +2950,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
for (ResourceEvent event : events) {
|
||||
if (event.name().equals(DATA_SOURCE_URL) || event.name().endsWith("." + DATA_SOURCE_URL)) {
|
||||
newUrl = event.newValue().toString();
|
||||
} else if (event.name().equals(DATA_SOURCE_CONNECT_TIMEOUT_SECONDS)
|
||||
} else if (event.name().equals(DATA_SOURCE_CONNECT_TIMEOUT_SECONDS)
|
||||
|| event.name().endsWith("." + DATA_SOURCE_CONNECT_TIMEOUT_SECONDS)) {
|
||||
newConnectTimeoutSeconds = Integer.decode(event.newValue().toString());
|
||||
} else if (event.name().equals(DATA_SOURCE_USER) || event.name().endsWith("." + DATA_SOURCE_USER)) {
|
||||
@@ -3119,7 +3119,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
}
|
||||
}
|
||||
|
||||
protected class JdbcConnection extends DataJdbcConnection {
|
||||
protected class JdbcConnection extends DataJdbcConnection implements AutoCloseable {
|
||||
|
||||
public int version;
|
||||
|
||||
@@ -3280,6 +3280,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
|
||||
return conn.createBlob();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() throws SQLException {
|
||||
conn.close();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user