首页 > 解决方案 > 是否可以选择记录的所有值,而不必分别选择每个值?

问题描述

我需要选择记录的所有值。我了解到可以使用该DSL.val()函数分别选择记录的每个值。假设我们有一个R具有以下属性的记录: name: String, number: Int. 分别选择记录的每个值如下所示:

R myRecord = new R()
ctx.select(val(myRecord.name), val(myRecord.number))

您可以猜到,当您有 15 个属性的记录时,这将变得非常乏味。

是否可以选择记录的所有值,而不必分别选择每个值?

我想象这样的事情:

ctx.select(myRecord)

标签: javasqlkotlinjooq

解决方案


如果您不需要类型安全,那么您可以使用Record.valuesRow(). fields()

ctx.select(myRecord.valuesRow().fields());

这将产生一个Select<Record>,其列数对于编译器是未知的。如果您更喜欢从特定R记录类型提供的额外类型安全中获利(我假设例如Record2<String, Integer>),那么您可以使用values()构造函数

ctx.selectFrom(values(myRecord.valuesRow()));

推荐阅读