web-dev-qa-db-ja.com

jOOQでカウントクエリを書く方法

純粋なSQLをjOOQに変換しています。

("SELECT Count(*) Count From Table "); 

これをjOOQで記述する必要があります。

selectQueryRecord.addSelect(Here Count Function );
selectQueryRecord.addFrom(Table);
25
Subodh Joshi

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)
67
Lukas Eder

これが私たちがこのように使わなければならない解決策です

  selectQueryRecord.fetchCount();
1
Subodh Joshi

これには次の構文を使用します。

import org.jooq.impl.DSL.count

... 

int count = 
DSL.using(configuration)
   .selectCount()
   .from(Table)
   .fetchOne(count());

これは冗長ではなく、単純です。

Lukasの回答日は2013年でしたが、おそらくこのソリューションは当時存在していませんでした。

1
Kevin Davin

私はこれを使いました:

Integer count = DSL.selectCount().from(Table).where(Table.FIELD.eq(value)).fetchOneInto(Integer.class);

0
Jesús Sánchez