增加ColumnValues

This commit is contained in:
redkale
2024-01-23 23:00:33 +08:00
parent 1c19b70ae9
commit cd39b484f5
3 changed files with 584 additions and 20 deletions

View File

@@ -1298,6 +1298,16 @@ public interface CacheSource extends Resourcable {
}
//------------------------ getex ------------------------
/**
* 获取key的值并可选择设置其过期时间
*
* @param <T> 泛型
* @param key 键
* @param expireSeconds 过期秒数
* @param type key值的类型
*
* @return key的值
*/
public <T> CompletableFuture<T> getexAsync(String key, int expireSeconds, Type type);
default CompletableFuture<String> getexStringAsync(String key, int expireSeconds) {

View File

@@ -0,0 +1,436 @@
/*
*
*/
package org.redkale.source;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.redkale.util.LambdaFunction;
import org.redkale.util.LambdaSupplier;
/**
* ColumnValue的集合类
*
* <p>
* 详情见: https://redkale.org
*
* @author zhangjx
* @since 2.8.0
*/
public class ColumnValues {
private final List<ColumnValue> list = new ArrayList<>();
public static ColumnValues create() {
return new ColumnValues();
}
/**
* 返回 {column} = {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues set(String column, Serializable value) {
list.add(ColumnValue.set(column, value));
return this;
}
/**
* 返回 {column} = {column} + {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues inc(String column, Number value) {
list.add(ColumnValue.set(column, value));
return this;
}
/**
* 返回 {column} = {column} + 1 操作
*
* @param column 字段名
*
* @return ColumnValues
*
*/
public ColumnValues inc(String column) {
list.add(ColumnValue.inc(column));
return this;
}
/**
* 返回 {column} = {column} - {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues dec(String column, Number value) {
list.add(ColumnValue.dec(column, value));
return this;
}
/**
* 返回 {column} = {column} - 1 操作
*
* @param column 字段名
*
* @return ColumnValues
*
*/
public ColumnValues dec(String column) {
list.add(ColumnValue.dec(column));
return this;
}
/**
* 返回 {column} = {column} * {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues mul(String column, Number value) {
list.add(ColumnValue.mul(column, value));
return this;
}
/**
* 返回 {column} = {column} / {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues div(String column, Number value) {
list.add(ColumnValue.div(column, value));
return this;
}
/**
* 返回 {column} = {column} % {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues mod(String column, Serializable value) {
list.add(ColumnValue.mod(column, value));
return this;
}
/**
* 返回 {column} = {column} &#38; {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues and(String column, Serializable value) {
list.add(ColumnValue.and(column, value));
return this;
}
/**
* 返回 {column} = {column} | {value} 操作
*
* @param column 字段名
* @param value 字段值
*
* @return ColumnValues
*/
public ColumnValues orr(String column, Serializable value) {
list.add(ColumnValue.orr(column, value));
return this;
}
/**
* 返回 {column} = {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
* @since 2.8.0
*/
public <T extends Serializable> ColumnValues set(LambdaSupplier<T> func) {
list.add(ColumnValue.set(func));
return this;
}
/**
* 返回 {column} = {column} + {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T extends Serializable> ColumnValues inc(LambdaSupplier<T> func) {
list.add(ColumnValue.inc(func));
return this;
}
/**
* 返回 {column} = {column} - {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T extends Serializable> ColumnValues dec(LambdaSupplier<T> func) {
list.add(ColumnValue.dec(func));
return this;
}
/**
* 返回 {column} = {column} * {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T extends Serializable> ColumnValues mul(LambdaSupplier<T> func) {
list.add(ColumnValue.mul(func));
return this;
}
/**
* 返回 {column} = {column} / {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T extends Serializable> ColumnValues div(LambdaSupplier<T> func) {
list.add(ColumnValue.div(func));
return this;
}
/**
* 返回 {column} = {column} % {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
* @since 2.8.0
*/
public <T extends Serializable> ColumnValues mod(LambdaSupplier<T> func) {
list.add(ColumnValue.mod(func));
return this;
}
/**
* 返回 {column} = {column} &#38; {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T extends Serializable> ColumnValues and(LambdaSupplier<T> func) {
list.add(ColumnValue.and(func));
return this;
}
/**
* 返回 {column} = {column} | {value} 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T extends Serializable> ColumnValues orr(LambdaSupplier<T> func) {
list.add(ColumnValue.orr(func));
return this;
}
/**
* 返回 {column} = {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues set(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.set(func, value));
return this;
}
/**
* 返回 {column} = {column} + {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues inc(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.inc(func, value));
return this;
}
/**
* 返回 {column} = {column} + 1 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues inc(LambdaFunction<T, ?> func) {
list.add(ColumnValue.inc(func));
return this;
}
/**
* 返回 {column} = {column} - {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues dec(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.dec(func, value));
return this;
}
/**
* 返回 {column} = {column} - 1 操作
*
* @param func 字段名Lambda
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues dec(LambdaFunction<T, ?> func) {
list.add(ColumnValue.dec(func));
return this;
}
/**
* 返回 {column} = {column} * {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
* @since 2.8.0
*/
public <T> ColumnValues mul(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.mul(func, value));
return this;
}
/**
* 返回 {column} = {column} / {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues div(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.div(func, value));
return this;
}
/**
* 返回 {column} = {column} % {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues mod(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.mod(func, value));
return this;
}
/**
* 返回 {column} = {column} &#38; {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues and(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.and(func, value));
return this;
}
/**
* 返回 {column} = {column} | {value} 操作
*
* @param func 字段名Lambda
* @param value 字段值
* @param <T> 值的泛型
*
* @return ColumnValues
*
*/
public <T> ColumnValues orr(LambdaFunction<T, ?> func, Serializable value) {
list.add(ColumnValue.orr(func, value));
return this;
}
/**
* 获取ColumnValue数组
*
* @return ColumnValue[]
*/
public ColumnValue[] getValues() {
return list.toArray(new ColumnValue[list.size()]);
}
@Override
public String toString() {
return String.valueOf(list);
}
}

View File

@@ -164,7 +164,7 @@ public interface DataSource extends Resourcable {
//-------------------------deleteAsync--------------------------
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
等价SQL: DELETE FROM {table} WHERE {primary} IN {getValues.id} <br>
*
* @param <T> 泛型
* @param entitys Entity对象
@@ -175,7 +175,7 @@ public interface DataSource extends Resourcable {
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
等价SQL: DELETE FROM {table} WHERE {primary} IN {getValues.id} <br>
*
* @param <T> 泛型
* @param entitys Entity对象
@@ -191,7 +191,7 @@ public interface DataSource extends Resourcable {
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
等价SQL: DELETE FROM {table} WHERE {primary} IN {getValues.id} <br>
*
* @param <T> 泛型
* @param entitys Entity对象
@@ -207,7 +207,7 @@ public interface DataSource extends Resourcable {
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
等价SQL: DELETE FROM {table} WHERE {primary} IN {getValues.id} <br>
*
* @param <T> 泛型
* @param entitys Entity对象
@@ -218,7 +218,7 @@ public interface DataSource extends Resourcable {
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
等价SQL: DELETE FROM {table} WHERE {primary} IN {getValues.id} <br>
*
* @param <T> 泛型
* @param entitys Entity对象
@@ -234,7 +234,7 @@ public interface DataSource extends Resourcable {
/**
* 删除指定主键值的记录, 多对象必须是同一个Entity类且必须在同一张表中 <br>
* 等价SQL: DELETE FROM {table} WHERE {primary} IN {values.id} <br>
等价SQL: DELETE FROM {table} WHERE {primary} IN {getValues.id} <br>
*
* @param <T> 泛型
* @param entitys Entity对象
@@ -702,6 +702,22 @@ public interface DataSource extends Resourcable {
*/
public <T> int updateColumn(final Class<T> clazz, final Serializable pk, final ColumnValue... values);
/**
* 更新指定主键值记录的部分字段 <br>
* 字段赋值操作选项见 ColumnExpress <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
* @param pk 主键
* @param values 更新字段
*
* @return 影响的记录条数
*/
default <T> int updateColumn(final Class<T> clazz, final Serializable pk, final ColumnValues values) {
return updateColumn(clazz, pk, values.getValues());
}
/**
* 更新指定主键值记录的部分字段 <br>
* 字段赋值操作选项见 ColumnExpress <br>
@@ -733,6 +749,22 @@ public interface DataSource extends Resourcable {
*/
public <T> CompletableFuture<Integer> updateColumnAsync(final Class<T> clazz, final Serializable pk, final ColumnValue... values);
/**
* 更新指定主键值记录的部分字段 <br>
* 字段赋值操作选项见 ColumnExpress <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
* @param pk 主键
* @param values 更新字段
*
* @return 影响的记录条数CompletableFuture
*/
default <T> CompletableFuture<Integer> updateColumnAsync(final Class<T> clazz, final Serializable pk, final ColumnValues values) {
return updateColumnAsync(clazz, pk, values.getValues());
}
/**
* 更新指定主键值记录的部分字段 <br>
* 字段赋值操作选项见 ColumnExpress <br>
@@ -767,6 +799,23 @@ public interface DataSource extends Resourcable {
return updateColumn(clazz, node, (Flipper) null, values);
}
/**
* 更新符合过滤条件记录的部分字段 <br>
* 字段赋值操作选项见 ColumnExpress <br>
* <b>注意</b>Entity类中标记为&#064;Column(updatable=false)不会被更新 <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
* @param node 过滤条件
* @param values 更新字段
*
* @return 影响的记录条数
*/
default <T> int updateColumn(final Class<T> clazz, final FilterNode node, final ColumnValues values) {
return updateColumn(clazz, node, (Flipper) null, values.getValues());
}
/**
* 更新符合过滤条件记录的部分字段 <br>
* 字段赋值操作选项见 ColumnExpress <br>
@@ -784,11 +833,29 @@ public interface DataSource extends Resourcable {
return updateColumnAsync(clazz, node, (Flipper) null, values);
}
/**
* 更新符合过滤条件记录的部分字段 <br>
* 字段赋值操作选项见 ColumnExpress <br>
* <b>注意</b>Entity类中标记为&#064;Column(updatable=false)不会被更新 <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
* @param node 过滤条件
* @param values 更新字段
*
* @return 影响的记录条数CompletableFuture
*/
default <T> CompletableFuture<Integer> updateColumnAsync(final Class<T> clazz, final FilterNode node, final ColumnValues values) {
return updateColumnAsync(clazz, node, (Flipper) null, values.getValues());
}
/**
* 更新符合过滤条件的记录的指定字段 <br>
* Flipper中offset字段将被忽略 <br>
* <b>注意</b>Entity类中标记为&#064;Column(updatable=false)不会被更新 <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} ORDER BY {flipper.sort} <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} ORDER BY
* {flipper.sort} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
@@ -804,7 +871,27 @@ public interface DataSource extends Resourcable {
* 更新符合过滤条件的记录的指定字段 <br>
* Flipper中offset字段将被忽略 <br>
* <b>注意</b>Entity类中标记为&#064;Column(updatable=false)不会被更新 <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} ORDER BY {flipper.sort} <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} ORDER BY
* {flipper.sort} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
* @param node 过滤条件
* @param flipper 翻页对象
* @param values 更新字段
*
* @return 影响的记录条数
*/
default <T> int updateColumn(final Class<T> clazz, final FilterNode node, final Flipper flipper, final ColumnValues values) {
return updateColumn(clazz, node, flipper, values.getValues());
}
/**
* 更新符合过滤条件的记录的指定字段 <br>
* Flipper中offset字段将被忽略 <br>
* <b>注意</b>Entity类中标记为&#064;Column(updatable=false)不会被更新 <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} ORDER BY
* {flipper.sort} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
@@ -816,6 +903,25 @@ public interface DataSource extends Resourcable {
*/
public <T> CompletableFuture<Integer> updateColumnAsync(final Class<T> clazz, final FilterNode node, final Flipper flipper, final ColumnValue... values);
/**
* 更新符合过滤条件的记录的指定字段 <br>
* Flipper中offset字段将被忽略 <br>
* <b>注意</b>Entity类中标记为&#064;Column(updatable=false)不会被更新 <br>
* 等价SQL: UPDATE {table} SET {column1} = {value1}, {column2} += {value2}, {column3} *= {value3}, &#183;&#183;&#183; WHERE {filter node} ORDER BY
* {flipper.sort} <br>
*
* @param <T> Entity泛型
* @param clazz Entity类
* @param node 过滤条件
* @param flipper 翻页对象
* @param values 更新字段
*
* @return 影响的记录条数CompletableFuture
*/
default <T> CompletableFuture<Integer> updateColumnAsync(final Class<T> clazz, final FilterNode node, final Flipper flipper, final ColumnValues values) {
return updateColumnAsync(clazz, node, flipper, values.getValues());
}
/**
* 更新单个记录的指定字段 <br>
* <b>注意</b>Entity类中标记为&#064;Column(updatable=false)不会被更新 <br>
@@ -1393,7 +1499,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE GROUP BY {col1} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid")
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid")
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
*
* @param <T> Entity泛型
@@ -1412,7 +1519,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid")
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid")
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
*
* @param <T> Entity泛型
@@ -1431,7 +1539,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterBean)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterBean)null)
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
*
* @param <T> Entity泛型
@@ -1451,7 +1560,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterBean)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterBean)null)
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
*
* @param <T> Entity泛型
@@ -1471,7 +1581,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterNode)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterNode)null)
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
*
* @param <T> Entity泛型
@@ -1489,7 +1600,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterNode)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), "targetid", (FilterNode)null)
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
*
* @param <T> Entity泛型
@@ -1507,7 +1619,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1}, {col2} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"))
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"))
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
*
* @param <T> Entity泛型
@@ -1526,7 +1639,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1}, {col2} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"))
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"))
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
*
* @param <T> Entity泛型
@@ -1545,7 +1659,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1}, {col2} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterBean)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterBean)null)
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
*
* @param <T> Entity泛型
@@ -1565,7 +1680,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1}, {col2} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterBean)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterBean)null)
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
*
* @param <T> Entity泛型
@@ -1585,7 +1701,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1}, {col2} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterNode)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterNode)null)
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
*
* @param <T> Entity泛型
@@ -1603,7 +1720,8 @@ public interface DataSource extends Resourcable {
/**
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1}, {col2} <br>
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterNode)null)
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnExpNode.div(ColumnFuncNode.sum("money"), 100),
* ColumnFuncNode.avg(ColumnExpNode.dec("money", 20)))), Utility.ofArray("fromid", "targetid"), (FilterNode)null)
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
*
* @param <T> Entity泛型