JOOQ总和字段值:BigDecimal到Int

Breezymri

我使用的postgres的值字段为numericJOOQ将其转换为BigDecimal我的JOOQ查询是:

val sumField = DSL.sum(TABLE.VALUE)
val query = dsl().select(TABLE.id.`as`("id"), sumField.`as`("sum"))
  .from(TABLE)
  .groupBy(TABLE.id)
  .fetch()
  .map{
    record -> SumById(
      id = record.get("id").toString(),
      sum = record.get("sum").toString().toInt()
    )
  }

SumById带有idsum字段的数据类在哪里

data class SumById (val id: String, val sum: Int)

我可以Int通过做得到总和.toString().toInt()但我在想,如果有更好的办法把BigDecimalInt

聚苯乙烯

我想这更像是Kotlin问题,而不是JOOQ问题。

卢卡斯·埃德(Lukas Eder)

就在这里。只需重用先前的列引用即可:

record -> SumById(
  id = record.get(TABLE.id.`as`("id")),
  sum = record.get(sumField.`as`("sum"))
)

另外,您也可以将它们存储在局部变量中。另一种选择是使用Record2.value1()Record2.value2()

record -> SumById(
  id = record.value1(),
  sum = record.value2()
)

...,因为类型信息是由jOOQ API在您的整个查询中维护的(至少22度)。

在jOOQ 3.10中,您还可以使用新的Kotlin解构支持,其中aRecord2<String, BigDecimal>可以按如下方式解构:

val (id, sum) = record;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章