在jooq中检索selectCount的值
我有一些看起来像这样的代码:
Record record = jooq .selectCount()
.from(USERS)
.fetchOne();
目前,我正在执行以下操作以获取计数:
Integer count = (Integer) record.getValue(0);
但是似乎必须要有一个更好的解决方案(类型安全…因为这就是使用jooq的全部目的)。有什么建议?
回答:
不幸的是,对于此特定查询,没有很多“更好”的方法来安全地键入count()
值。您可以执行以下操作以添加类型安全性:
Field<Integer> f = count();Integer count = jooq.
.select(f) // Or selectCount(). Replaced it to illustrate the case
.from(USERS)
.fetchOne(f);
问题在于,有关投影的大多数类型信息fetch()
在“到达”方法时已“丢失”给Java编译器。没有办法,一个ResultQuery.fetchXXX()
方法可以从恢复它SELECT
条款,它产生于你。
在jOOQ用户组上,一些用户争辩说将投影fetch()
完全移入方法中,完全是C#的LINQ或Scala的SLICK的方法。这将使更高级的SELECT
语句的表达大大复杂化。一个更详尽的解释记录在这里。
在jOOQ 3.0中,引入了附加的记录级类型安全性。因此,在jOOQ
3.3中,可以这样获取单个值(已注册为#2246):
<T> T fetchValue(Select<Record1<T>> select);
以上是 在jooq中检索selectCount的值 的全部内容, 来源链接: utcz.com/qa/418171.html