[英]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.