【发布时间】:2012-06-30 03:49:33
【问题描述】:
你好,我想弄清楚如何在 jooq 中写这样的东西
select * from table
where ( ( a = query or b = query or a = query )
and ( e = query or g = query or z = query) )
我不知道如何在 jooq 中执行嵌套条件。请帮忙。
【问题讨论】:
你好,我想弄清楚如何在 jooq 中写这样的东西
select * from table
where ( ( a = query or b = query or a = query )
and ( e = query or g = query or z = query) )
我不知道如何在 jooq 中执行嵌套条件。请帮忙。
【问题讨论】:
您需要了解 API 的以下部分:
public interface Condition {
Condition and(Condition other);
Condition or(Condition other);
}
因此,任何Condition 都可以使用and() / or() 方法(和其他方法)与其他Conditions 连接。在您的情况下,您可以像这样轻松地形成您的条件:
Condition c1 = a.equal(query);
Condition c2 = b.equal(query);
Condition c3 = a.equal(query);
Condition d1 = e.equal(query);
Condition d2 = g.equal(query);
Condition d3 = z.equal(query);
现在这些条件可以这样连接:
c1.or(c2).or(c3).and(d1.or(d2).or(d3));
或者放入SQL语句:
create.select()
.from(table)
.where(c1.or(c2).or(c3)
.and(d1.or(d2).or(d3)));
当然,您不必将c[1-3], d[1-3] 条件分配给变量。您可以将所有内容内联到单个语句中:
create.select()
.from(table)
.where(a.equal(query).or(b.equal(query)).or(a.equal(query))
.and(e.equal(query).or(g.equal(query)).or(z.equal(query)));
您可以在手册中找到更多信息:
https://www.jooq.org/doc/latest/manual/sql-building/conditional-expressions/
【讨论】: