我使用的postgres的值字段为numeric
。JOOQ将其转换为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
带有id
和sum
字段的数据类在哪里:
data class SumById (val id: String, val sum: Int)
我可以Int
通过做得到总和.toString().toInt()
。但我在想,如果有更好的办法把BigDecimal
到Int
。
聚苯乙烯
我想这更像是Kotlin问题,而不是JOOQ问题。
就在这里。只需重用先前的列引用即可:
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] 删除。
我来说两句