我让这个jOOQ选择,根据参数值,where
条件应该等于或不等于值:
如果参数= true:
Charts c = CHARTS.as("c");
context.select()
.from(c)
.where(c.CHART_TYPE.eq(100)) // note the eq
.orderBy(c.NAME)
.fetch();
如果参数= false:
Charts c = CHARTS.as("c");
context.select()
.from(c)
.where(c.CHART_TYPE.ne(100)) // note the ne
.orderBy(c.NAME)
.fetch();
我不想重复整个选择(在许多情况下,比示例要复杂/更长)。是否有一种方法只能根据参数设置where
条件,然后将其插入选择中?
是的,可以创建一个返回Condition对象的方法。
例如
Charts c = CHARTS.as("c");
context.select()
.from(c)
.where(createCondtion(c))
.orderBy(c.NAME)
.fetch();
private Condition createCondition(Charts c) {
if (parameter == false) {
return c.CHART_TYPE.ne(100);
} else {
return c.CHART_TYPE.eq(100);
}
}
您可以使用Field.compare(Comparator, T)
Field.compare(Comparator, T)