如何在jOOQ中编写计数查询

Sub*_*shi 24 java sql jooq

我现在正在将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)


Kev*_*vin 5

我为此使用以下语法:

import org.jooq.impl.DSL.count

... 

int count = 
DSL.using(configuration)
   .selectCount()
   .from(Table)
   .fetchOne(count());
Run Code Online (Sandbox Code Playgroud)

这不太冗长而且更简单。

Lukas的回答可以追溯到2013年,也许当时这个解决方案并不存在。