繁体   English   中英

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

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

我的问题很简单,实际上,我只想知道在使用JOOQ将条件列表传递给WHERE子句时,在生成的SQL中使用了什么布尔运算符。

例如:

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();

生成的SQL是否是这样的:

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

或这个:

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

条件是“ AND连接的。 尽管SelectWhereStep.where(Condition...)上的Javadoc没有提到这一点( 应该固定 ),但是其底层实现是SelectQuery.addConditions(Condition...) ,它指定了Operator.AND用法。

因此,结果查询将是您的第二个示例:

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