我的问题很简单,真的,我只是想知道当使用 JOOQ 将条件列表传递给 WHERE 子句时,生成的 SQL 中使用了什么 boolean 运算符。
例如:
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 没有提到这一点 ( 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');
关于java - 将条件列表传递给 JOOQ 中的 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27321101/