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);
如果提供,则附加信息将用于覆盖从 ResultSet
的 java.sql.ResultSetMetaData
信息中获得的信息。
反馈
您对此页面有任何反馈吗? 我们很乐意听到它!