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