【发布时间】:2020-05-12 05:57:32
【问题描述】:
我想用 Java 构建一个逻辑树,其中包含可以使用的条件 用于数据库插入。
例如:
Node tree = input0.eq(3).and(input1.eq(1).or(input2.greaterThan(5)));
可以转换为:
WHERE input0=3 AND (input1 = 1 OR input2 > 5)
由于一个节点可以是一个逻辑表达式,如和,或等,以及一个带有数据的叶子,我认为一个父节点类和两个子类是理想的。但我不知道如何处理嵌套表达式。我已经在这里阅读了一些类似的问题,但它们还不够具体。
public class Node {
public Long id;
public Node parent;
public List<Node> children;
}
public class LogicalNode extends Node {
LogicType logicType;
public LogicalNode () {
super();
}
getter and setter...
}
public class LeafNode extends Node {
Object input;
public LeafNode () {
super();
}
getter and setter...
}
public enum LogicType
{
AND("and"),
OR("or"),
NOT("not"),
EQ("="),
GREATER_THAN(">"),
LESSER_THAN("<");
private String name;
LogicType (String name) {
this.name= name;
}
public String getName() {
return name;
}
}
【问题讨论】:
标签: java data-structures tree logic where-clause