简体   繁体   English

将条件列表传递给JOOQ中的WHERE子句

[英]Passing a List of Conditions to a WHERE-clause in JOOQ

My question is very simple, really, I just want to know what boolean operator is used in the generated SQL when passing a List of Conditions to a WHERE-clause using JOOQ. 我的问题很简单,实际上,我只想知道在使用JOOQ将条件列表传递给WHERE子句时,在生成的SQL中使用了什么布尔运算符。

For example: 例如:

List<Condition> conditions = new ArrayList<>();
conditions.add(MY_TABLE.MY_COLUMN1.equal("Foo").and(MY_TABLE.MY_COLUMN2.equal("Far"));
conditions.add(MY_TABLE.MY_COLUMN1.equal("Boo").and(MY_TABLE.MY_COLUMN2.equal("Bar"));
DSL.selectFrom(MY_TABLE).where(conditions).fetch();

Is the resulting SQL this: 生成的SQL是否是这样的:

SELECT * FROM MY_TABLE WHERE (MY_COLUMN1='Foo' AND MY_COLUMN2='Far') OR (MY_COLUMN1='Boo' AND MY_COLUMN2='BAR');

or this: 或这个:

SELECT * FROM MY_TABLE WHERE (MY_COLUMN1='Foo' AND MY_COLUMN2='Far') AND (MY_COLUMN1='Boo' AND MY_COLUMN2='BAR');

The conditions are AND -connected. 条件是“ AND连接的。 While the Javadoc on SelectWhereStep.where(Condition...) doesn't mention this ( which should be fixed ), the underlying implementation is that of SelectQuery.addConditions(Condition...) , which specifies usage of Operator.AND . 尽管SelectWhereStep.where(Condition...)上的Javadoc没有提到这一点( 应该固定 ),但是其底层实现是SelectQuery.addConditions(Condition...) ,它指定了Operator.AND用法。

So the resulting query will be your second example: 因此,结果查询将是您的第二个示例:

SELECT * FROM MY_TABLE 
WHERE (MY_COLUMN1='Foo' AND MY_COLUMN2='Far') 
  AND (MY_COLUMN1='Boo' AND MY_COLUMN2='BAR');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM