jOOQ:在 select 语句之前设置 where 条件
jOOQ: set where condition before the select statement
我有这个 jOOQ select 根据参数值,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();
我不想重复整个 select(在许多情况下 complex/longer 比示例更多)。有没有办法只根据参数设置 where
条件,然后将其插入 select?
是的,这不是问题,您可以创建一个 returns 条件对象的方法。
例如
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)
context.select()
.from(c)
.where(c.CHART_TYPE.compare(parameter ? Comparator.EQ : Comparator.NE, 100))
.orderBy(c.NAME)
.fetch();
我有这个 jOOQ select 根据参数值,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();
我不想重复整个 select(在许多情况下 complex/longer 比示例更多)。有没有办法只根据参数设置 where
条件,然后将其插入 select?
是的,这不是问题,您可以创建一个 returns 条件对象的方法。
例如
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)
context.select()
.from(c)
.where(c.CHART_TYPE.compare(parameter ? Comparator.EQ : Comparator.NE, 100))
.orderBy(c.NAME)
.fetch();