jOOQ:select 原始值

jOOQ: select primitive values

如果我的查询结果是包含原始值的单个列,有没有办法用 jooq 获取它们,避免原始装箱?

例如,从 table 中的每本书中获取页数作为 int[]。

int[] pageCounts = dsl.select(BOOK.PAGE_COUNT)
    .from(BOOK)
    .fetch();

jOOQ 大量使用泛型,这意味着在 jOOQ 内部的某个时刻,装箱是不可避免的,即使 jOOQ 有可能将结果作为 int[].

您将不得不 运行 直接使用 JDBC 查询(您仍然可以使用 jOOQ 构建它)来执行您想要的操作。例如

// Use some third party primitive int buffer
var buffer = new IntArrayList();

try (
    Cursor<?> cursor = dsl.select(BOOK.PAGE_COUNT).from(BOOK).fetchLazy();
    ResultSet rs = cursor.resultSet();
) {
    while (rs.next())
        buffer.add(rs.getInt(1));
}