如何初始化Condition对象而不显式赋值?

时间:2014-09-19 14:18:41

标签: java sql jooq

有一些example:

Condition condition;

condition = CAR.COLOR.eq("blue");
condition = condition.or(CAR.MODEL.eq("Genesis"));
condition = condition.or(CAR.MANUFACTOR.eq("ford").and(CAR.COLOR.eq("blue")));

是否有一些方法可以初始化org.jooq.Condition对象而无需显式分配?类似的东西:

Condition condition = new Condition();

然后我想在for-each循环中增加我的条件并在某种方法中返回这个条件对象。但如果我这样做:

public Condition getRuleConditions(List<Rule> rules){
  Condition condition;
  for(Rule rule: rules){
    condition = condition.or(rule.getField().eq(rule.getValue()));
  }
return condition;
}

我无法返回此条件对象。

1 个答案:

答案 0 :(得分:2)

您有两种选择:

使用初始虚拟Condition

Condition condition = DSL.falseCondition();
for (Rule rule : rules) {
    condition = condition.or(rule.getField().eq(rule.getValue()));
}

使用null

Condition condition = null;
for (Rule rule : rules) {
    Condition c = rule.getField().eq(rule.getValue());
    condition = (condition == null) ? c : condition.or(c);
}

在第二个示例中,结果Condition当然可以是null,并且您必须在代码中的其他位置处理它。在第一个示例中,结果Condition永远不会是null