ColumnNodeValue更名为ColumnExpNode

This commit is contained in:
redkale
2023-11-17 20:54:18 +08:00
parent ea13e89146
commit 36c68df5ff
9 changed files with 89 additions and 92 deletions

View File

@@ -365,7 +365,7 @@ public abstract class AbstractDataSource extends AbstractService implements Data
*
* @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);
}

View File

@@ -2458,7 +2458,7 @@ public abstract class AbstractDataSqlSource extends AbstractDataSource implement
if (funcNodes[i] instanceof ColumnFuncNode) {
funcSqlColumns.append(info.formatSQLValue((Attribute) null, "a", (ColumnFuncNode) funcNodes[i], sqlFormatter));
} 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();

View File

@@ -13,9 +13,9 @@ import static org.redkale.source.ColumnExpress.*;
* String 视为 字段名 <br>
* Number 视为 数值 <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>
* 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>
* 详情见: https://redkale.org
@@ -23,18 +23,18 @@ import static org.redkale.source.ColumnExpress.*;
* @author zhangjx
* @since 2.0.0
*/
public class ColumnNodeValue implements ColumnNode {
public class ColumnExpNode implements ColumnNode {
protected Serializable left;//类型只能是StringNumberColumnNodeValue
protected Serializable left;//类型只能是StringNumberColumnExpNode
protected ColumnExpress express; //MOV时left必须是String, right必须是null
protected Serializable right;//类型只能是StringNumberColumnNodeValue
protected Serializable right;//类型只能是StringNumberColumnExpNode
public ColumnNodeValue() {
public ColumnExpNode() {
}
public ColumnNodeValue(Serializable left, ColumnExpress express, Serializable right) {
public ColumnExpNode(Serializable left, ColumnExpress express, Serializable right) {
if (express == 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");
}
} else {
if (!(left instanceof String) && !(left instanceof Number) && !(left instanceof ColumnNodeValue) && !(left instanceof ColumnFuncNode)) {
throw new IllegalArgumentException("left value must be String, Number, ColumnFuncNode or ColumnNodeValue");
if (!(left instanceof String) && !(left instanceof Number) && !(left instanceof ColumnExpNode) && !(left instanceof ColumnFuncNode)) {
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)) {
throw new IllegalArgumentException("right value must be String, Number, ColumnFuncNode or ColumnNodeValue");
if (!(right instanceof String) && !(right instanceof Number) && !(right instanceof ColumnExpNode) && !(right instanceof ColumnFuncNode)) {
throw new IllegalArgumentException("right value must be String, Number, ColumnFuncNode or ColumnExpNode");
}
}
this.left = left;
@@ -55,72 +55,72 @@ public class ColumnNodeValue implements ColumnNode {
this.right = right;
}
public static ColumnNodeValue create(Serializable left, ColumnExpress express, Serializable right) {
return new ColumnNodeValue(left, express, right);
public static ColumnExpNode create(Serializable left, ColumnExpress express, Serializable right) {
return new ColumnExpNode(left, express, right);
}
public static ColumnNodeValue mov(String left) {
return new ColumnNodeValue(left, MOV, null);
public static ColumnExpNode mov(String left) {
return new ColumnExpNode(left, MOV, null);
}
public static ColumnNodeValue inc(Serializable left, Serializable right) {
return new ColumnNodeValue(left, INC, right);
public static ColumnExpNode inc(Serializable left, Serializable right) {
return new ColumnExpNode(left, INC, right);
}
public static ColumnNodeValue dec(Serializable left, Serializable right) {
return new ColumnNodeValue(left, DEC, right);
public static ColumnExpNode dec(Serializable left, Serializable right) {
return new ColumnExpNode(left, DEC, right);
}
public static ColumnNodeValue mul(Serializable left, Serializable right) {
return new ColumnNodeValue(left, MUL, right);
public static ColumnExpNode mul(Serializable left, Serializable right) {
return new ColumnExpNode(left, MUL, right);
}
public static ColumnNodeValue div(Serializable left, Serializable right) {
return new ColumnNodeValue(left, DIV, right);
public static ColumnExpNode div(Serializable left, Serializable right) {
return new ColumnExpNode(left, DIV, right);
}
public static ColumnNodeValue mod(Serializable left, Serializable right) {
return new ColumnNodeValue(left, MOD, right);
public static ColumnExpNode mod(Serializable left, Serializable right) {
return new ColumnExpNode(left, MOD, right);
}
public static ColumnNodeValue and(Serializable left, Serializable right) {
return new ColumnNodeValue(left, AND, right);
public static ColumnExpNode and(Serializable left, Serializable right) {
return new ColumnExpNode(left, AND, right);
}
public static ColumnNodeValue orr(Serializable left, Serializable right) {
return new ColumnNodeValue(left, ORR, right);
public static ColumnExpNode orr(Serializable left, Serializable right) {
return new ColumnExpNode(left, ORR, right);
}
public ColumnNodeValue inc(Serializable right) {
public ColumnExpNode inc(Serializable right) {
return any(INC, right);
}
public ColumnNodeValue dec(Serializable right) {
public ColumnExpNode dec(Serializable right) {
return any(DEC, right);
}
public ColumnNodeValue mul(Serializable right) {
public ColumnExpNode mul(Serializable right) {
return any(MUL, right);
}
public ColumnNodeValue div(Serializable right) {
public ColumnExpNode div(Serializable right) {
return any(DIV, right);
}
public ColumnNodeValue mod(Serializable right) {
public ColumnExpNode mod(Serializable right) {
return any(MOD, right);
}
public ColumnNodeValue and(Serializable right) {
public ColumnExpNode and(Serializable right) {
return any(AND, right);
}
public ColumnNodeValue orr(Serializable right) {
public ColumnExpNode orr(Serializable right) {
return any(ORR, right);
}
protected ColumnNodeValue any(ColumnExpress express, Serializable right) {
ColumnNodeValue one = new ColumnNodeValue(this.left, this.express, this.right);
protected ColumnExpNode any(ColumnExpress express, Serializable right) {
ColumnExpNode one = new ColumnExpNode(this.left, this.express, this.right);
this.left = one;
this.express = express;
this.right = right;

View File

@@ -8,7 +8,7 @@ package org.redkale.source;
import java.io.Serializable;
/**
* 与ColumnNodeValue 组合,用于复杂的字段表达式 。
* 与ColumnExpNode 组合,用于复杂的字段表达式 。
* String 视为 字段名
*
* <p>
@@ -21,14 +21,14 @@ public class ColumnFuncNode implements ColumnNode {
protected FilterFunc func;
protected Serializable value;//类型只能是String、ColumnNodeValue
protected Serializable value;//类型只能是String、ColumnExpNode
public ColumnFuncNode() {
}
public ColumnFuncNode(FilterFunc func, Serializable node) {
if (!(node instanceof String) && !(node instanceof ColumnNodeValue)) {
throw new IllegalArgumentException("value must be String or ColumnNodeValue");
if (!(node instanceof String) && !(node instanceof ColumnExpNode)) {
throw new IllegalArgumentException("value must be String or ColumnExpNode");
}
this.func = func;
this.value = node;

View File

@@ -8,7 +8,7 @@ package org.redkale.source;
import java.io.Serializable;
/**
* ColumnFuncNode与ColumnNodeValue 的接口
* ColumnFuncNode与ColumnExpNode 的接口
*
* <p>
* 详情见: https://redkale.org

View File

@@ -13,7 +13,7 @@ import org.redkale.util.*;
/**
* ColumnValue主要用于多个字段更新的表达式。
* value值一般为: ColumnNodeValue、ColumnFuncNode、Number、String等 <br>
* value值一般为: ColumnExpNode、ColumnFuncNode、Number、String等 <br>
* 用于 DataSource.updateColumn 方法 <br>
*
* <p>
@@ -35,7 +35,7 @@ public class 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());
}
@@ -43,22 +43,19 @@ public class ColumnValue {
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) {
this(LambdaFunction.readColumn(func), express, value);
}
public ColumnValue(String column, Serializable value) {
private ColumnValue(String column, Serializable value) {
this(column, ColumnExpress.MOV, value);
}
public ColumnValue(String column, ColumnExpress express, Serializable value) {
Objects.requireNonNull(column);
Objects.requireNonNull(express);
this.column = column;
this.express = express == null ? ColumnExpress.MOV : express;
this.express = express;
this.value = value;
}
@@ -94,7 +91,7 @@ public class 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);
}
@@ -119,7 +116,7 @@ public class 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);
}
@@ -144,7 +141,7 @@ public class 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);
}
@@ -156,7 +153,7 @@ public class 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);
}
@@ -321,7 +318,7 @@ public class ColumnValue {
* @since 2.8.0
*/
public static <T> ColumnValue create(LambdaFunction<T, ?> func, Serializable value) {
return new ColumnValue(func, value);
return new ColumnValue(func, MOV, value);
}
/**

View File

@@ -1358,7 +1358,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1377,7 +1377,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1396,7 +1396,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1416,7 +1416,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1436,7 +1436,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1454,7 +1454,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1472,7 +1472,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1491,7 +1491,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1510,7 +1510,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1530,7 +1530,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1550,7 +1550,7 @@ 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(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>
*
* @param <T> Entity泛型
@@ -1568,7 +1568,7 @@ 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(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>
*
* @param <T> Entity泛型

View File

@@ -537,8 +537,8 @@ public final class EntityCache<T> {
private Number queryColumnNumber(final List<T> list, final ColumnNode funcNode) {
if (funcNode instanceof ColumnFuncNode) {
return queryColumnNumber(list, (ColumnFuncNode) funcNode);
} else if (funcNode instanceof ColumnNodeValue) {
return queryColumnNumber(list, (ColumnNodeValue) funcNode);
} else if (funcNode instanceof ColumnExpNode) {
return queryColumnNumber(list, (ColumnExpNode) funcNode);
} else {
return null;
}
@@ -553,13 +553,13 @@ public final class EntityCache<T> {
Number num = null;
if (funcNode.getValue() instanceof ColumnFuncNode) {
num = queryColumnNumber(list, (ColumnFuncNode) funcNode.getValue());
} else if (funcNode.getValue() instanceof ColumnNodeValue) {
num = queryColumnNumber(list, (ColumnNodeValue) funcNode.getValue());
} else if (funcNode.getValue() instanceof ColumnExpNode) {
num = queryColumnNumber(list, (ColumnExpNode) funcNode.getValue());
}
return num;
}
private Number queryColumnNumber(final List<T> list, final ColumnNodeValue nodeValue) {
private Number queryColumnNumber(final List<T> list, final ColumnExpNode nodeValue) {
return null;
}
@@ -1015,8 +1015,8 @@ public final class EntityCache<T> {
numb = getValue((Number) attr.get(entity), express, val);
break;
case MOV:
if (val instanceof ColumnNodeValue) {
val = updateColumnNodeValue(attr, entity, (ColumnNodeValue) val);
if (val instanceof ColumnExpNode) {
val = updateColumnExpNode(attr, entity, (ColumnExpNode) val);
}
newval = val;
if (val instanceof Number) {
@@ -1061,21 +1061,21 @@ public final class EntityCache<T> {
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();
if (left instanceof CharSequence) {
left = info.getUpdateAttribute(left.toString()).get(entity);
if (node.getExpress() == ColumnExpress.MOV) {
return left;
}
} else if (left instanceof ColumnNodeValue) {
left = updateColumnNodeValue(attr, entity, (ColumnNodeValue) left);
} else if (left instanceof ColumnExpNode) {
left = updateColumnExpNode(attr, entity, (ColumnExpNode) left);
}
Serializable right = node.getRight();
if (left instanceof CharSequence) {
right = info.getUpdateAttribute(right.toString()).get(entity);
} else if (left instanceof ColumnNodeValue) {
right = updateColumnNodeValue(attr, entity, (ColumnNodeValue) right);
} else if (left instanceof ColumnExpNode) {
right = updateColumnExpNode(attr, entity, (ColumnExpNode) right);
}
return getValue((Number) left, node.getExpress(), right);
}

View File

@@ -1512,9 +1512,9 @@ public final class EntityInfo<T> {
return null;
}
Object val = cv.getValue();
//ColumnNodeValue时 cv.getExpress() == ColumnExpress.MOV 只用于updateColumn
if (val instanceof ColumnNodeValue) {
return formatSQLValue(attr, null, (ColumnNodeValue) val, formatter);
//ColumnExpNode时 cv.getExpress() == ColumnExpress.MOV 只用于updateColumn
if (val instanceof ColumnExpNode) {
return formatSQLValue(attr, null, (ColumnExpNode) val, formatter);
}
if (val instanceof ColumnFuncNode) {
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) {
if (node.getValue() instanceof ColumnNodeValue) {
return node.getFunc().getColumn(formatSQLValue(attr, tabalis, (ColumnNodeValue) node.getValue(), formatter).toString());
if (node.getValue() instanceof ColumnExpNode) {
return node.getFunc().getColumn(formatSQLValue(attr, tabalis, (ColumnExpNode) node.getValue(), formatter).toString());
} else {
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();
if (left instanceof CharSequence) {
left = this.getSQLColumn(tabalis, left.toString());
if (node.getExpress() == ColumnExpress.MOV) {
return (String) left;
}
} else if (left instanceof ColumnNodeValue) {
left = "(" + formatSQLValue(attr, tabalis, (ColumnNodeValue) left, formatter) + ")";
} else if (left instanceof ColumnExpNode) {
left = "(" + formatSQLValue(attr, tabalis, (ColumnExpNode) left, formatter) + ")";
} else if (left instanceof ColumnFuncNode) {
left = "(" + formatSQLValue(attr, tabalis, (ColumnFuncNode) left, formatter) + ")";
}
Serializable right = node.getRight();
if (right instanceof CharSequence) {
right = this.getSQLColumn(null, right.toString());
} else if (left instanceof ColumnNodeValue) {
right = "(" + formatSQLValue(attr, tabalis, (ColumnNodeValue) right, formatter) + ")";
} else if (left instanceof ColumnExpNode) {
right = "(" + formatSQLValue(attr, tabalis, (ColumnExpNode) right, formatter) + ")";
} else if (left instanceof ColumnFuncNode) {
right = "(" + formatSQLValue(attr, tabalis, (ColumnFuncNode) right, formatter) + ")";
}