【问题标题】:jOOQ: select primitive valuesjOOQ:选择原始值
【发布时间】:2021-04-25 02:23:55
【问题描述】:

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

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

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

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-08
      • 2016-05-22
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 2019-07-09
      相关资源
      最近更新 更多