Enterprise 中级

用 jOOQ 类型安全的流畅 SQL DSL 替代原始 JDBC 字符串 SQL。

✕ Raw JDBC
String sql = "SELECT id, name, email FROM users "
           + "WHERE department = ? AND salary > ?";
try (Connection con = ds.getConnection();
     PreparedStatement ps =
             con.prepareStatement(sql)) {
    ps.setString(1, department);
    ps.setBigDecimal(2, minSalary);
    ResultSet rs = ps.executeQuery();
    List<User> result = new ArrayList<>();
    while (rs.next()) {
        result.add(new User(
            rs.getLong("id"),
            rs.getString("name"),
            rs.getString("email")));
    }
    return result;
}
✓ jOOQ
DSLContext dsl = DSL.using(ds, SQLDialect.POSTGRES);

return dsl
    .select(USERS.ID, USERS.NAME, USERS.EMAIL)
    .from(USERS)
    .where(USERS.DEPARTMENT.eq(department)
        .and(USERS.SALARY.gt(minSalary)))
    .fetchInto(User.class);
发现此代码有问题? 告诉我们。
🔒

类型安全的列

列名是生成的 Java 常量——拼写错误和类型不匹配成为编译错误。

📖

SQL 流畅性

DSL 读起来像 SQL,但具有 Java 的类型安全性。

🔧

数据库模式感知

从实际数据库模式生成,始终与真实列对齐。

旧方式
原始 JDBC
现代方式
jOOQ SQL DSL
自 JDK
11
难度
中级
JDBC 与 jOOQ
可用

jOOQ 开源版支持所有主要开源数据库;商业版支持专有数据库

jOOQ(Java Object Oriented Querying)从数据库生成 Java 代码,提供类型安全的 SQL 构建。列名是生成的 Java 常量,因此拼写错误在编译时而非运行时捕获。

分享 𝕏 🦋 in