Je convertis Pure SQL en jOOQ maintenant je l'ai
("SELECT Count(*) Count From Table ");
Je dois écrire ceci dans jOOQ comment pouvons-nous l'écrire?
selectQueryRecord.addSelect(Here Count Function );
selectQueryRecord.addFrom(Table);
La façon la plus simple d'implémenter ce que vous demandez est la suivante, en utilisant selectCount()
:
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(0, int.class);
Alternativement, vous pouvez exprimer explicitement la fonction count()
:
int count =
DSL.using(configuration)
.select(DSL.count())
.from(Table)
.fetchOne(0, int.class);
Il existe une autre alternative pour récupérer un count(*)
de toute expression arbitraire select
, ce qui vous évite de spécifier l'index de la colonne de résultat et de taper ci-dessus fetchOne()
méthode. Cela utilise fetchCount()
:
int count =
DSL.using(configuration)
.fetchCount(DSL.selectFrom(Table));
Attention, cependant, cela rend une sélection imbriquée comme ceci:
SELECT COUNT(*) FROM (SELECT a, b, ... FROM Table)
Voici la solution que nous devons utiliser comme ceci
selectQueryRecord.fetchCount();
J'utilise la syntaxe suivante pour cela:
import org.jooq.impl.DSL.count
...
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(count());
C'est moins verbeux et plus simple.
La réponse de Lukas date de 2013, peut-être que cette solution n'existait pas à l'époque.
J'ai utilisé ceci:
Integer count = DSL.selectCount().from(Table).where(Table.FIELD.eq(value)).fetchOneInto(Integer.class);