簡體   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