2014-12-05 111 views
0

我的問題非常簡單,真的,我只想知道在使用JOOQ將條件列表傳遞給WHERE子句時,在生成的SQL中使用了什麼布爾運算符。將條件列表傳遞給JOOQ中的WHERE子句

例如:

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

回答

1

的條件是AND - 連通。儘管SelectWhereStep.where(Condition...)上的Javadoc未提及此(which should be fixed),但其基本實現是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');