我需要选择一条记录的所有值。
我了解到可以使用DSL.val()
函数分别选择记录的每个值。
假设我们有一个记录R
,具有以下属性:
name: String
,number: Int
。分别选择记录的每个值将如下所示:
R myRecord = new R()
ctx.select(val(myRecord.name), val(myRecord.number))
您可以猜测,当您拥有15个属性的记录时,这将变得非常乏味。
是否可以选择一条记录的所有值,而不必分别选择每个值?
我想像这样:
ctx.select(myRecord)
答案 0 :(得分:2)
如果不需要类型安全性,则可以使用Record.valuesRow()
。fields()
:
ctx.select(myRecord.valuesRow().fields());
这将产生一个Select<Record>
,其列数对于编译器是未知的。如果您希望从特定的R
记录类型提供的附加类型安全中获利(例如,假设Record2<String, Integer>
),则可以使用values()
constructor:
ctx.selectFrom(values(myRecord.valuesRow()));