純粋なSQLをjOOQに変換しています。
("SELECT Count(*) Count From Table ");
これをjOOQで記述する必要があります。
selectQueryRecord.addSelect(Here Count Function );
selectQueryRecord.addFrom(Table);
selectCount()
を使用して、要求しているものを実装する最も簡単な方法はこれです。
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(0, int.class);
または、 count()
関数を明示的に表すことができます。
int count =
DSL.using(configuration)
.select(DSL.count())
.from(Table)
.fetchOne(0, int.class);
任意のselect
式の count(*)
をフェッチする別の方法があります。これは、結果の列インデックスを指定して上記のfetchOne()
を入力するのを避けるのに役立ちます方法。これは fetchCount()
を使用します:
int count =
DSL.using(configuration)
.fetchCount(DSL.selectFrom(Table));
ただし、次のようにネストされた選択がレンダリングされることに注意してください。
SELECT COUNT(*) FROM (SELECT a, b, ... FROM Table)
これが私たちがこのように使わなければならない解決策です
selectQueryRecord.fetchCount();
これには次の構文を使用します。
import org.jooq.impl.DSL.count
...
int count =
DSL.using(configuration)
.selectCount()
.from(Table)
.fetchOne(count());
これは冗長ではなく、単純です。
Lukasの回答日は2013年でしたが、おそらくこのソリューションは当時存在していませんでした。
私はこれを使いました:
Integer count = DSL.selectCount().from(Table).where(Table.FIELD.eq(value)).fetchOneInto(Integer.class);