可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

ResultSet 获取

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

在与遗留应用程序交互时,您可能更希望 jOOQ 返回一个 java.sql.ResultSet,而不是 jOOQ 自己的 org.jooq.Result 类型。 这可以通过两种简单的方式完成

try (

    // jOOQ's Cursor type exposes the underlying ResultSet:
    ResultSet rs1 = create.selectFrom(BOOK).fetchLazy().resultSet();

    // But you can also directly access that ResultSet from ResultQuery:
    ResultSet rs2 = create.selectFrom(BOOK).fetchResultSet()) {

// ...
}

将 jOOQ 的 Result 转换为 JDBC ResultSet

除了操作来自数据库的开放资源的 JDBC ResultSet 外,您还可以让 jOOQ 的 org.jooq.Result 将自身包装在 java.sql.ResultSet 中。 这样做的好处是,这样创建的 ResultSet 没有与数据库的开放连接。 这是一个完全在内存中的 ResultSet

// Transform a jOOQ Result into a ResultSet
Result<BookRecord> result = create.selectFrom(BOOK).fetch();
ResultSet rs = result.intoResultSet();

反之:使用 jOOQ 从旧版 ResultSet 中获取数据

以上操作的反向也是可能的。 也许,您应用程序的旧版本生成 JDBC java.sql.ResultSet,并且您希望将它们转换为 org.jooq.Result

// Transform a JDBC ResultSet into a jOOQ Result
ResultSet rs = connection.createStatement().executeQuery("SELECT * FROM BOOK");

// As a Result:
Result<Record> result = create.fetch(rs);

// As a Cursor
Cursor<Record> cursor = create.fetchLazy(rs);

您还可以通过将记录类型传递给上述 fetch 方法来加强与 jOOQ 数据类型系统和数据类型转换功能的交互

// Pass an array of types:
Result<Record> result = create.fetch    (rs, Integer.class, String.class);
Cursor<Record> result = create.fetchLazy(rs, Integer.class, String.class);

// Pass an array of data types:
Result<Record> result = create.fetch    (rs, INTEGER, VARCHAR);
Cursor<Record> result = create.fetchLazy(rs, INTEGER, VARCHAR);

// Pass an array of fields:
Result<Record> result = create.fetch    (rs, BOOK.ID, BOOK.TITLE);
Cursor<Record> result = create.fetchLazy(rs, BOOK.ID, BOOK.TITLE);

如果提供,则附加信息将用于覆盖从 ResultSetjava.sql.ResultSetMetaData 信息中获得的信息。

反馈

您对此页面有任何反馈吗? 我们很乐意听到它!

The jOOQ Logo