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