ColumnNodeValue更名为ColumnExpNode
This commit is contained in:
@@ -365,7 +365,7 @@ public abstract class AbstractDataSource extends AbstractService implements Data
|
|||||||
*
|
*
|
||||||
* @return Predicate
|
* @return Predicate
|
||||||
*/
|
*/
|
||||||
protected <T, E> Predicate<T> createPredicate(FilterNode node, EntityCache<T> cache) {
|
protected <T> Predicate<T> createPredicate(FilterNode node, EntityCache<T> cache) {
|
||||||
return node.createPredicate(cache);
|
return node.createPredicate(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2458,7 +2458,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
|
|||||||
if (funcNodes[i] instanceof ColumnFuncNode) {
|
if (funcNodes[i] instanceof ColumnFuncNode) {
|
||||||
funcSqlColumns.append(info.formatSQLValue((Attribute) null, "a", (ColumnFuncNode) funcNodes[i], sqlFormatter));
|
funcSqlColumns.append(info.formatSQLValue((Attribute) null, "a", (ColumnFuncNode) funcNodes[i], sqlFormatter));
|
||||||
} else {
|
} else {
|
||||||
funcSqlColumns.append(info.formatSQLValue((Attribute) null, "a", (ColumnNodeValue) funcNodes[i], sqlFormatter));
|
funcSqlColumns.append(info.formatSQLValue((Attribute) null, "a", (ColumnExpNode) funcNodes[i], sqlFormatter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
final Map<Class, String> joinTabalis = node == null ? null : node.getJoinTabalis();
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ import static org.redkale.source.ColumnExpress.*;
|
|||||||
* String 视为 字段名 <br>
|
* String 视为 字段名 <br>
|
||||||
* Number 视为 数值 <br>
|
* Number 视为 数值 <br>
|
||||||
* 例如: UPDATE Reord SET updateTime = createTime + 10 WHERE id = 1 <br>
|
* 例如: UPDATE Reord SET updateTime = createTime + 10 WHERE id = 1 <br>
|
||||||
* source.updateColumn(Record.class, 1, ColumnValue.mov("updateTime", ColumnNodeValue.inc("createTime", 10))); <br>
|
source.updateColumn(Record.class, 1, ColumnValue.mov("updateTime", ColumnExpNode.inc("createTime", 10))); <br>
|
||||||
* 例如: UPDATE Reord SET updateTime = createTime * 10 / createCount WHERE id = 1 <br>
|
* 例如: UPDATE Reord SET updateTime = createTime * 10 / createCount WHERE id = 1 <br>
|
||||||
* source.updateColumn(Record.class, 1, ColumnValue.mov("updateTime", ColumnNodeValue.div(ColumnNodeValue.mul("createTime", 10), "createCount"))); <br>
|
source.updateColumn(Record.class, 1, ColumnValue.mov("updateTime", ColumnExpNode.div(ColumnExpNode.mul("createTime", 10), "createCount"))); <br>
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* 详情见: https://redkale.org
|
* 详情见: https://redkale.org
|
||||||
@@ -23,18 +23,18 @@ import static org.redkale.source.ColumnExpress.*;
|
|||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
* @since 2.0.0
|
* @since 2.0.0
|
||||||
*/
|
*/
|
||||||
public class ColumnNodeValue implements ColumnNode {
|
public class ColumnExpNode implements ColumnNode {
|
||||||
|
|
||||||
protected Serializable left;//类型只能是String、Number、ColumnNodeValue
|
protected Serializable left;//类型只能是String、Number、ColumnExpNode
|
||||||
|
|
||||||
protected ColumnExpress express; //MOV时,left必须是String, right必须是null
|
protected ColumnExpress express; //MOV时,left必须是String, right必须是null
|
||||||
|
|
||||||
protected Serializable right;//类型只能是String、Number、ColumnNodeValue
|
protected Serializable right;//类型只能是String、Number、ColumnExpNode
|
||||||
|
|
||||||
public ColumnNodeValue() {
|
public ColumnExpNode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue(Serializable left, ColumnExpress express, Serializable right) {
|
public ColumnExpNode(Serializable left, ColumnExpress express, Serializable right) {
|
||||||
if (express == null) {
|
if (express == null) {
|
||||||
throw new IllegalArgumentException("express cannot be null");
|
throw new IllegalArgumentException("express cannot be null");
|
||||||
}
|
}
|
||||||
@@ -43,11 +43,11 @@ public class ColumnNodeValue implements ColumnNode {
|
|||||||
throw new IllegalArgumentException("left value must be String, right value must be null on ColumnExpress.MOV");
|
throw new IllegalArgumentException("left value must be String, right value must be null on ColumnExpress.MOV");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!(left instanceof String) && !(left instanceof Number) && !(left instanceof ColumnNodeValue) && !(left instanceof ColumnFuncNode)) {
|
if (!(left instanceof String) && !(left instanceof Number) && !(left instanceof ColumnExpNode) && !(left instanceof ColumnFuncNode)) {
|
||||||
throw new IllegalArgumentException("left value must be String, Number, ColumnFuncNode or ColumnNodeValue");
|
throw new IllegalArgumentException("left value must be String, Number, ColumnFuncNode or ColumnExpNode");
|
||||||
}
|
}
|
||||||
if (!(right instanceof String) && !(right instanceof Number) && !(right instanceof ColumnNodeValue) && !(right instanceof ColumnFuncNode)) {
|
if (!(right instanceof String) && !(right instanceof Number) && !(right instanceof ColumnExpNode) && !(right instanceof ColumnFuncNode)) {
|
||||||
throw new IllegalArgumentException("right value must be String, Number, ColumnFuncNode or ColumnNodeValue");
|
throw new IllegalArgumentException("right value must be String, Number, ColumnFuncNode or ColumnExpNode");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.left = left;
|
this.left = left;
|
||||||
@@ -55,72 +55,72 @@ public class ColumnNodeValue implements ColumnNode {
|
|||||||
this.right = right;
|
this.right = right;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue create(Serializable left, ColumnExpress express, Serializable right) {
|
public static ColumnExpNode create(Serializable left, ColumnExpress express, Serializable right) {
|
||||||
return new ColumnNodeValue(left, express, right);
|
return new ColumnExpNode(left, express, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue mov(String left) {
|
public static ColumnExpNode mov(String left) {
|
||||||
return new ColumnNodeValue(left, MOV, null);
|
return new ColumnExpNode(left, MOV, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue inc(Serializable left, Serializable right) {
|
public static ColumnExpNode inc(Serializable left, Serializable right) {
|
||||||
return new ColumnNodeValue(left, INC, right);
|
return new ColumnExpNode(left, INC, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue dec(Serializable left, Serializable right) {
|
public static ColumnExpNode dec(Serializable left, Serializable right) {
|
||||||
return new ColumnNodeValue(left, DEC, right);
|
return new ColumnExpNode(left, DEC, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue mul(Serializable left, Serializable right) {
|
public static ColumnExpNode mul(Serializable left, Serializable right) {
|
||||||
return new ColumnNodeValue(left, MUL, right);
|
return new ColumnExpNode(left, MUL, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue div(Serializable left, Serializable right) {
|
public static ColumnExpNode div(Serializable left, Serializable right) {
|
||||||
return new ColumnNodeValue(left, DIV, right);
|
return new ColumnExpNode(left, DIV, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue mod(Serializable left, Serializable right) {
|
public static ColumnExpNode mod(Serializable left, Serializable right) {
|
||||||
return new ColumnNodeValue(left, MOD, right);
|
return new ColumnExpNode(left, MOD, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue and(Serializable left, Serializable right) {
|
public static ColumnExpNode and(Serializable left, Serializable right) {
|
||||||
return new ColumnNodeValue(left, AND, right);
|
return new ColumnExpNode(left, AND, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ColumnNodeValue orr(Serializable left, Serializable right) {
|
public static ColumnExpNode orr(Serializable left, Serializable right) {
|
||||||
return new ColumnNodeValue(left, ORR, right);
|
return new ColumnExpNode(left, ORR, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue inc(Serializable right) {
|
public ColumnExpNode inc(Serializable right) {
|
||||||
return any(INC, right);
|
return any(INC, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue dec(Serializable right) {
|
public ColumnExpNode dec(Serializable right) {
|
||||||
return any(DEC, right);
|
return any(DEC, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue mul(Serializable right) {
|
public ColumnExpNode mul(Serializable right) {
|
||||||
return any(MUL, right);
|
return any(MUL, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue div(Serializable right) {
|
public ColumnExpNode div(Serializable right) {
|
||||||
return any(DIV, right);
|
return any(DIV, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue mod(Serializable right) {
|
public ColumnExpNode mod(Serializable right) {
|
||||||
return any(MOD, right);
|
return any(MOD, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue and(Serializable right) {
|
public ColumnExpNode and(Serializable right) {
|
||||||
return any(AND, right);
|
return any(AND, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnNodeValue orr(Serializable right) {
|
public ColumnExpNode orr(Serializable right) {
|
||||||
return any(ORR, right);
|
return any(ORR, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ColumnNodeValue any(ColumnExpress express, Serializable right) {
|
protected ColumnExpNode any(ColumnExpress express, Serializable right) {
|
||||||
ColumnNodeValue one = new ColumnNodeValue(this.left, this.express, this.right);
|
ColumnExpNode one = new ColumnExpNode(this.left, this.express, this.right);
|
||||||
this.left = one;
|
this.left = one;
|
||||||
this.express = express;
|
this.express = express;
|
||||||
this.right = right;
|
this.right = right;
|
||||||
@@ -8,7 +8,7 @@ package org.redkale.source;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 与ColumnNodeValue 组合,用于复杂的字段表达式 。
|
* 与ColumnExpNode 组合,用于复杂的字段表达式 。
|
||||||
* String 视为 字段名
|
* String 视为 字段名
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
@@ -21,14 +21,14 @@ public class ColumnFuncNode implements ColumnNode {
|
|||||||
|
|
||||||
protected FilterFunc func;
|
protected FilterFunc func;
|
||||||
|
|
||||||
protected Serializable value;//类型只能是String、ColumnNodeValue
|
protected Serializable value;//类型只能是String、ColumnExpNode
|
||||||
|
|
||||||
public ColumnFuncNode() {
|
public ColumnFuncNode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnFuncNode(FilterFunc func, Serializable node) {
|
public ColumnFuncNode(FilterFunc func, Serializable node) {
|
||||||
if (!(node instanceof String) && !(node instanceof ColumnNodeValue)) {
|
if (!(node instanceof String) && !(node instanceof ColumnExpNode)) {
|
||||||
throw new IllegalArgumentException("value must be String or ColumnNodeValue");
|
throw new IllegalArgumentException("value must be String or ColumnExpNode");
|
||||||
}
|
}
|
||||||
this.func = func;
|
this.func = func;
|
||||||
this.value = node;
|
this.value = node;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ package org.redkale.source;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ColumnFuncNode与ColumnNodeValue 的接口
|
* ColumnFuncNode与ColumnExpNode 的接口
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* 详情见: https://redkale.org
|
* 详情见: https://redkale.org
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import org.redkale.util.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* ColumnValue主要用于多个字段更新的表达式。
|
* ColumnValue主要用于多个字段更新的表达式。
|
||||||
* value值一般为: ColumnNodeValue、ColumnFuncNode、Number、String等 <br>
|
* value值一般为: ColumnExpNode、ColumnFuncNode、Number、String等 <br>
|
||||||
* 用于 DataSource.updateColumn 方法 <br>
|
* 用于 DataSource.updateColumn 方法 <br>
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
@@ -35,7 +35,7 @@ public class ColumnValue {
|
|||||||
public ColumnValue() {
|
public ColumnValue() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends Serializable> ColumnValue(LambdaSupplier<T> func) {
|
private <T extends Serializable> ColumnValue(LambdaSupplier<T> func) {
|
||||||
this(LambdaSupplier.readColumn(func), ColumnExpress.MOV, func.get());
|
this(LambdaSupplier.readColumn(func), ColumnExpress.MOV, func.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,22 +43,19 @@ public class ColumnValue {
|
|||||||
this(LambdaSupplier.readColumn(func), express, func.get());
|
this(LambdaSupplier.readColumn(func), express, func.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> ColumnValue(LambdaFunction<T, ?> func, Serializable value) {
|
|
||||||
this(LambdaFunction.readColumn(func), ColumnExpress.MOV, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public <T> ColumnValue(LambdaFunction<T, ?> func, ColumnExpress express, Serializable value) {
|
public <T> ColumnValue(LambdaFunction<T, ?> func, ColumnExpress express, Serializable value) {
|
||||||
this(LambdaFunction.readColumn(func), express, value);
|
this(LambdaFunction.readColumn(func), express, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnValue(String column, Serializable value) {
|
private ColumnValue(String column, Serializable value) {
|
||||||
this(column, ColumnExpress.MOV, value);
|
this(column, ColumnExpress.MOV, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ColumnValue(String column, ColumnExpress express, Serializable value) {
|
public ColumnValue(String column, ColumnExpress express, Serializable value) {
|
||||||
Objects.requireNonNull(column);
|
Objects.requireNonNull(column);
|
||||||
|
Objects.requireNonNull(express);
|
||||||
this.column = column;
|
this.column = column;
|
||||||
this.express = express == null ? ColumnExpress.MOV : express;
|
this.express = express;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +91,7 @@ public class ColumnValue {
|
|||||||
*
|
*
|
||||||
* @return ColumnValue
|
* @return ColumnValue
|
||||||
*/
|
*/
|
||||||
public static ColumnValue inc(String column, Serializable value) {
|
public static ColumnValue inc(String column, Number value) {
|
||||||
return new ColumnValue(column, INC, value);
|
return new ColumnValue(column, INC, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,7 +116,7 @@ public class ColumnValue {
|
|||||||
*
|
*
|
||||||
* @return ColumnValue
|
* @return ColumnValue
|
||||||
*/
|
*/
|
||||||
public static ColumnValue dec(String column, Serializable value) {
|
public static ColumnValue dec(String column, Number value) {
|
||||||
return new ColumnValue(column, DEC, value);
|
return new ColumnValue(column, DEC, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,7 +141,7 @@ public class ColumnValue {
|
|||||||
*
|
*
|
||||||
* @return ColumnValue
|
* @return ColumnValue
|
||||||
*/
|
*/
|
||||||
public static ColumnValue mul(String column, Serializable value) {
|
public static ColumnValue mul(String column, Number value) {
|
||||||
return new ColumnValue(column, MUL, value);
|
return new ColumnValue(column, MUL, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +153,7 @@ public class ColumnValue {
|
|||||||
*
|
*
|
||||||
* @return ColumnValue
|
* @return ColumnValue
|
||||||
*/
|
*/
|
||||||
public static ColumnValue div(String column, Serializable value) {
|
public static ColumnValue div(String column, Number value) {
|
||||||
return new ColumnValue(column, DIV, value);
|
return new ColumnValue(column, DIV, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,7 +318,7 @@ public class ColumnValue {
|
|||||||
* @since 2.8.0
|
* @since 2.8.0
|
||||||
*/
|
*/
|
||||||
public static <T> ColumnValue create(LambdaFunction<T, ?> func, Serializable value) {
|
public static <T> ColumnValue create(LambdaFunction<T, ?> func, Serializable value) {
|
||||||
return new ColumnValue(func, value);
|
return new ColumnValue(func, MOV, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1358,7 +1358,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE GROUP BY {col1} <br>
|
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE GROUP BY {col1} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1377,7 +1377,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1} <br>
|
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1396,7 +1396,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1} <br>
|
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1416,7 +1416,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1} <br>
|
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1436,7 +1436,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1} <br>
|
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1454,7 +1454,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1} <br>
|
* 等价SQL: SELECT col1, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1472,7 +1472,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1}, {col2} <br>
|
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1}, {col2} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1491,7 +1491,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1}, {col2} <br>
|
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} GROUP BY {col1}, {col2} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1510,7 +1510,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1}, {col2} <br>
|
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1}, {col2} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1530,7 +1530,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1}, {col2} <br>
|
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter bean} GROUP BY {col1}, {col2} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1550,7 +1550,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1}, {col2} <br>
|
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1}, {col2} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
@@ -1568,7 +1568,7 @@ public interface DataSource extends Resourcable {
|
|||||||
/**
|
/**
|
||||||
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
* 查询符合过滤条件记录的GROUP BY聚合结果Map <br>
|
||||||
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1}, {col2} <br>
|
* 等价SQL: SELECT col1, col2, FUNC{funcColumn1}, FUNC{funcColumn2} FROM {table} WHERE {filter node} GROUP BY {col1}, {col2} <br>
|
||||||
* 如 queryColumnMapAsync(OrderRecord.class, Utility.ofArray(ColumnNodeValue.div(ColumnFuncNode.sum("money"), 100), ColumnFuncNode.avg(ColumnNodeValue.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>
|
* 等价于: SELECT fromid, targetid, SUM(money) / 100, AVG(money - 20) FROM orderrecord GROUP BY fromid, targetid<br>
|
||||||
*
|
*
|
||||||
* @param <T> Entity泛型
|
* @param <T> Entity泛型
|
||||||
|
|||||||
@@ -537,8 +537,8 @@ public final class EntityCache<T> {
|
|||||||
private Number queryColumnNumber(final List<T> list, final ColumnNode funcNode) {
|
private Number queryColumnNumber(final List<T> list, final ColumnNode funcNode) {
|
||||||
if (funcNode instanceof ColumnFuncNode) {
|
if (funcNode instanceof ColumnFuncNode) {
|
||||||
return queryColumnNumber(list, (ColumnFuncNode) funcNode);
|
return queryColumnNumber(list, (ColumnFuncNode) funcNode);
|
||||||
} else if (funcNode instanceof ColumnNodeValue) {
|
} else if (funcNode instanceof ColumnExpNode) {
|
||||||
return queryColumnNumber(list, (ColumnNodeValue) funcNode);
|
return queryColumnNumber(list, (ColumnExpNode) funcNode);
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -553,13 +553,13 @@ public final class EntityCache<T> {
|
|||||||
Number num = null;
|
Number num = null;
|
||||||
if (funcNode.getValue() instanceof ColumnFuncNode) {
|
if (funcNode.getValue() instanceof ColumnFuncNode) {
|
||||||
num = queryColumnNumber(list, (ColumnFuncNode) funcNode.getValue());
|
num = queryColumnNumber(list, (ColumnFuncNode) funcNode.getValue());
|
||||||
} else if (funcNode.getValue() instanceof ColumnNodeValue) {
|
} else if (funcNode.getValue() instanceof ColumnExpNode) {
|
||||||
num = queryColumnNumber(list, (ColumnNodeValue) funcNode.getValue());
|
num = queryColumnNumber(list, (ColumnExpNode) funcNode.getValue());
|
||||||
}
|
}
|
||||||
return num;
|
return num;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Number queryColumnNumber(final List<T> list, final ColumnNodeValue nodeValue) {
|
private Number queryColumnNumber(final List<T> list, final ColumnExpNode nodeValue) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1015,8 +1015,8 @@ public final class EntityCache<T> {
|
|||||||
numb = getValue((Number) attr.get(entity), express, val);
|
numb = getValue((Number) attr.get(entity), express, val);
|
||||||
break;
|
break;
|
||||||
case MOV:
|
case MOV:
|
||||||
if (val instanceof ColumnNodeValue) {
|
if (val instanceof ColumnExpNode) {
|
||||||
val = updateColumnNodeValue(attr, entity, (ColumnNodeValue) val);
|
val = updateColumnExpNode(attr, entity, (ColumnExpNode) val);
|
||||||
}
|
}
|
||||||
newval = val;
|
newval = val;
|
||||||
if (val instanceof Number) {
|
if (val instanceof Number) {
|
||||||
@@ -1061,21 +1061,21 @@ public final class EntityCache<T> {
|
|||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
private <V> Serializable updateColumnNodeValue(Attribute<T, V> attr, final T entity, ColumnNodeValue node) {
|
private <V> Serializable updateColumnExpNode(Attribute<T, V> attr, final T entity, ColumnExpNode node) {
|
||||||
Serializable left = node.getLeft();
|
Serializable left = node.getLeft();
|
||||||
if (left instanceof CharSequence) {
|
if (left instanceof CharSequence) {
|
||||||
left = info.getUpdateAttribute(left.toString()).get(entity);
|
left = info.getUpdateAttribute(left.toString()).get(entity);
|
||||||
if (node.getExpress() == ColumnExpress.MOV) {
|
if (node.getExpress() == ColumnExpress.MOV) {
|
||||||
return left;
|
return left;
|
||||||
}
|
}
|
||||||
} else if (left instanceof ColumnNodeValue) {
|
} else if (left instanceof ColumnExpNode) {
|
||||||
left = updateColumnNodeValue(attr, entity, (ColumnNodeValue) left);
|
left = updateColumnExpNode(attr, entity, (ColumnExpNode) left);
|
||||||
}
|
}
|
||||||
Serializable right = node.getRight();
|
Serializable right = node.getRight();
|
||||||
if (left instanceof CharSequence) {
|
if (left instanceof CharSequence) {
|
||||||
right = info.getUpdateAttribute(right.toString()).get(entity);
|
right = info.getUpdateAttribute(right.toString()).get(entity);
|
||||||
} else if (left instanceof ColumnNodeValue) {
|
} else if (left instanceof ColumnExpNode) {
|
||||||
right = updateColumnNodeValue(attr, entity, (ColumnNodeValue) right);
|
right = updateColumnExpNode(attr, entity, (ColumnExpNode) right);
|
||||||
}
|
}
|
||||||
return getValue((Number) left, node.getExpress(), right);
|
return getValue((Number) left, node.getExpress(), right);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1512,9 +1512,9 @@ public final class EntityInfo<T> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Object val = cv.getValue();
|
Object val = cv.getValue();
|
||||||
//ColumnNodeValue时 cv.getExpress() == ColumnExpress.MOV 只用于updateColumn
|
//ColumnExpNode时 cv.getExpress() == ColumnExpress.MOV 只用于updateColumn
|
||||||
if (val instanceof ColumnNodeValue) {
|
if (val instanceof ColumnExpNode) {
|
||||||
return formatSQLValue(attr, null, (ColumnNodeValue) val, formatter);
|
return formatSQLValue(attr, null, (ColumnExpNode) val, formatter);
|
||||||
}
|
}
|
||||||
if (val instanceof ColumnFuncNode) {
|
if (val instanceof ColumnFuncNode) {
|
||||||
return formatSQLValue(attr, null, (ColumnFuncNode) val, formatter);
|
return formatSQLValue(attr, null, (ColumnFuncNode) val, formatter);
|
||||||
@@ -1545,30 +1545,30 @@ public final class EntityInfo<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected CharSequence formatSQLValue(Attribute<T, Serializable> attr, String tabalis, final ColumnFuncNode node, BiFunction<EntityInfo, Object, CharSequence> formatter) {
|
protected CharSequence formatSQLValue(Attribute<T, Serializable> attr, String tabalis, final ColumnFuncNode node, BiFunction<EntityInfo, Object, CharSequence> formatter) {
|
||||||
if (node.getValue() instanceof ColumnNodeValue) {
|
if (node.getValue() instanceof ColumnExpNode) {
|
||||||
return node.getFunc().getColumn(formatSQLValue(attr, tabalis, (ColumnNodeValue) node.getValue(), formatter).toString());
|
return node.getFunc().getColumn(formatSQLValue(attr, tabalis, (ColumnExpNode) node.getValue(), formatter).toString());
|
||||||
} else {
|
} else {
|
||||||
return node.getFunc().getColumn(this.getSQLColumn(tabalis, String.valueOf(node.getValue())));
|
return node.getFunc().getColumn(this.getSQLColumn(tabalis, String.valueOf(node.getValue())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected CharSequence formatSQLValue(Attribute<T, Serializable> attr, String tabalis, final ColumnNodeValue node, BiFunction<EntityInfo, Object, CharSequence> formatter) {
|
protected CharSequence formatSQLValue(Attribute<T, Serializable> attr, String tabalis, final ColumnExpNode node, BiFunction<EntityInfo, Object, CharSequence> formatter) {
|
||||||
Serializable left = node.getLeft();
|
Serializable left = node.getLeft();
|
||||||
if (left instanceof CharSequence) {
|
if (left instanceof CharSequence) {
|
||||||
left = this.getSQLColumn(tabalis, left.toString());
|
left = this.getSQLColumn(tabalis, left.toString());
|
||||||
if (node.getExpress() == ColumnExpress.MOV) {
|
if (node.getExpress() == ColumnExpress.MOV) {
|
||||||
return (String) left;
|
return (String) left;
|
||||||
}
|
}
|
||||||
} else if (left instanceof ColumnNodeValue) {
|
} else if (left instanceof ColumnExpNode) {
|
||||||
left = "(" + formatSQLValue(attr, tabalis, (ColumnNodeValue) left, formatter) + ")";
|
left = "(" + formatSQLValue(attr, tabalis, (ColumnExpNode) left, formatter) + ")";
|
||||||
} else if (left instanceof ColumnFuncNode) {
|
} else if (left instanceof ColumnFuncNode) {
|
||||||
left = "(" + formatSQLValue(attr, tabalis, (ColumnFuncNode) left, formatter) + ")";
|
left = "(" + formatSQLValue(attr, tabalis, (ColumnFuncNode) left, formatter) + ")";
|
||||||
}
|
}
|
||||||
Serializable right = node.getRight();
|
Serializable right = node.getRight();
|
||||||
if (right instanceof CharSequence) {
|
if (right instanceof CharSequence) {
|
||||||
right = this.getSQLColumn(null, right.toString());
|
right = this.getSQLColumn(null, right.toString());
|
||||||
} else if (left instanceof ColumnNodeValue) {
|
} else if (left instanceof ColumnExpNode) {
|
||||||
right = "(" + formatSQLValue(attr, tabalis, (ColumnNodeValue) right, formatter) + ")";
|
right = "(" + formatSQLValue(attr, tabalis, (ColumnExpNode) right, formatter) + ")";
|
||||||
} else if (left instanceof ColumnFuncNode) {
|
} else if (left instanceof ColumnFuncNode) {
|
||||||
right = "(" + formatSQLValue(attr, tabalis, (ColumnFuncNode) right, formatter) + ")";
|
right = "(" + formatSQLValue(attr, tabalis, (ColumnFuncNode) right, formatter) + ")";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user