Jooq 是一个用于 Java 的类型安全的 SQL 编写库,它允许你以一种类似于编写 SQL 的方式来构建查询,但是完全在 Java 代码中完成。在 Jooq 中,你可以使用 Condition 接口来构建查询条件。
以下是一些基本的 Jooq Condition 写法的例子:
1. 简单条件(例如,字段等于某个值):
import static org.jooq.impl.DSL.*;
Condition condition = field("name").eq("John");
2. 复合条件(例如,使用 AND 或 OR):
import static org.jooq.impl.DSL.*;
Condition condition1 = field("age").gt(18);
Condition condition2 = field("age").lt(30);
/
/ AND 条件
exists子查询Condition combinedCondition = condition1.and(condition2);
// OR 条件
Condition combinedConditionOr = (condition2);
3. 使用 IN 子句:
import static org.jooq.impl.DSL.*;
Condition inCondition = field("status").in("active", "pending");
4. 使用 LIKE 或 NOT LIKE:
import static org.jooq.impl.DSL.*;
Condition likeCondition = field("name").like("%John%");
Condition notLikeCondition = field("name").notLike("%Doe%");
5. 使用 BETWEEN:
import static org.jooq.impl.DSL.*;
Condition betweenCondition = field("age").between(18, 30);
6. 使用 IS NULL 或 IS NOT NULL:
import static org.jooq.impl.DSL.*;
Condition nullCondition = field("email").isNull();
Condition notNullCondition = field("email").isNotNull();
7. 使用 EXISTS(子查询):
import static org.jooq.impl.DSL.*;
Condition existsCondition = exists(
    selectOne()
    .from("orders")
    .where(field("orders.user_id").eq(field("users.id")))
);
8. 使用 CASE WHEN 语句:
import static org.jooq.impl.DSL.*;
Condition caseCondition = when(field("age").gt(18), "adult")
    .otherwise("minor");
在 Jooq 中,你可以将这些条件与 SELECT、UPDATE、DELETE 等查询类型结合使用,以构建完整的 SQL 查询。例如,使用 SELECT 查询:
import static org.jooq.impl.DSL.*;
Result<Record> result = create.select()
    .from("users")
    .where(condition)
    .fetch();
请注意,上述代码片段中的 create 是一个 DSLContext 实例,它是 Jooq 的核心接口,用于构建查询。你需要在你的代码中创建这个实例,通常是通过 Jooq 的配置来实现。