我现在正在将Pure SQL转换为jOOQ
("SELECT Count(*) Count From Table ");
Run Code Online (Sandbox Code Playgroud)
我必须在jOOQ写这个怎么写呢?
selectQueryRecord.addSelect(Here Count Function );
selectQueryRecord.addFrom(Table);
Run Code Online (Sandbox Code Playgroud)
Luk*_*der 64
实现您所请求的内容的最直接方式是selectCount()
:使用:
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(0, int.class);
Run Code Online (Sandbox Code Playgroud)
或者,您可以明确表达该count()
功能:
int count =
DSL.using(configuration)
.select(DSL.count())
.from(Table)
.fetchOne(0, int.class);
Run Code Online (Sandbox Code Playgroud)
还有另一种方法可以获取count(*)
任意select
表达式,这有助于您避免在上述fetchOne()
方法中指定结果列索引和类型.这用于fetchCount()
:
int count =
DSL.using(configuration)
.fetchCount(DSL.selectFrom(Table));
Run Code Online (Sandbox Code Playgroud)
但请注意,这会呈现如下嵌套选择:
SELECT COUNT(*) FROM (SELECT a, b, ... FROM Table)
Run Code Online (Sandbox Code Playgroud)
我为此使用以下语法:
import org.jooq.impl.DSL.count
...
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(count());
Run Code Online (Sandbox Code Playgroud)
这不太冗长而且更简单。
Lukas的回答可以追溯到2013年,也许当时这个解决方案并不存在。
归档时间: |
|
查看次数: |
20137 次 |
最近记录: |