Ich konvertiere gerade Pure SQL zu jOOQ, jetzt habe ich das
("SELECT Count(*) Count From Table ");
Ich muss das in jOOQ schreiben, wie können wir das schreiben?
selectQueryRecord.addSelect(Hier Count Funktion);
selectQueryRecord.addFrom(Table);
Ich konvertiere gerade Pure SQL zu jOOQ, jetzt habe ich das
("SELECT Count(*) Count From Table ");
Ich muss das in jOOQ schreiben, wie können wir das schreiben?
selectQueryRecord.addSelect(Hier Count Funktion);
selectQueryRecord.addFrom(Table);
Der einfachste Weg, um das umzusetzen, was du angefordert hast, ist dies, indem du selectCount()
verwendest:
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(0, int.class);
Alternativ kannst du die count()
Funktion explizit ausdrücken:
int count =
DSL.using(configuration)
.select(DSL.count())
.from(Table)
.fetchOne(0, int.class);
Oder du kannst dies verwenden, wenn du das Zuordnen des Werts nicht magst:
int count =
DSL.using(configuration)
.fetchValue(selectCount().from(Table));
Es gibt eine weitere Alternative, um ein count(*)
von einem beliebigen select
-Ausdruck abzurufen, die es dir ermöglicht, den Ergebnisspaltenindex und -typ in der obigen fetchOne()
-Methode zu vermeiden. Dies verwendet fetchCount()
:
int count =
DSL.using(configuration)
.fetchCount(DSL.selectFrom(Table));
Aber sei vorsichtig, dass dies ein verschachteltes Select wie folgt ergibt:
SELECT COUNT(*) FROM (SELECT a, b, ... FROM Table)
Veraltet. - 3.5.0 - [#3356] - Diese Methode wird entfernt, da sie verwirrend von allen anderen Arten der ResultQuery.fetch() Methoden abweicht, indem sie die ursprüngliche Select-Anweisung modifiziert, indem sie sie umschließt. Insbesondere kann diese Methode leicht mit ResultQuery.fetch(Field) verwechselt werden, oder genauer gesagt mit fetch(count()), was eine völlig andere Semantik hat. Verwenden Sie stattdessen DSLContext.fetchCount(Select). Führen Sie diese Abfrage im Kontext ihres angehängten Executors aus und geben Sie einen COUNT(*)-Wert zurück.
Ich denke, die richtige Art, den Wert zu erhalten, wäre wie folgt:
SelectQuery selectQueryCount = transaction.selectQuery();
selectQueryCount.addFrom(Tabelle);
Result resultObject = selectQueryRecord.fetchCount();
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.