java - 将条件列表传递给 JOOQ 中的 WHERE 子句

标签 java mysql jooq

我的问题很简单,真的,我只是想知道当使用 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/

相关文章:

mysql - 在mysql社区服务器/工作台上加载本地数据

spring-boot - 使用 testcontainers 和 jOOQ 的 Spring Boot 不会注入(inject) DSL 上下文

java - 在 jOOQ 中限定临时表列名

java - 将表记录映射到 JPA 实体

java math.​mxparser 当参数名称为 "e"时返回 NaN

java - Android 模拟器因 Db 崩溃(找不到错误 - 新手)

java - MongoDB Group操作返回文档而不是单个字段

java - 进程和线程的区别

mysql - 在 SQL 中检索缺失的关系

MySQL insert, update-heavy, 按索引排序