jOOQ:设置select语句之前的条件

问题描述 投票:1回答:2

我让这个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条件,然后将其插入选择中?

java jooq
2个回答
2
投票

是的,可以创建一个返回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);
   }
}

0
投票

您可以使用Field.compare(Comparator, T)

Field.compare(Comparator, T)
© www.soinside.com 2019 - 2024. All rights reserved.