我的问题非常简单,实际上,我只是想知道在使用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');
答案 0 :(得分: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');