EzJDBCで件数を取得する!
id:hiro_nemuさんのblogで、以下のエントリを見つけたのでEzJDBCの場合を書いてみる。。。
S2JDBCで件数を取得する(SELECT COUNT(*))
ページング処理するときlimit, offsetを指定したデータ取得用SQLと、総件数を取得するSQLってSQL自体大体同じ内容なので、何かいい方法があるんじゃないかと思ったら案の定ありました。総件数を取得するには、getCount()メソッドを使うらしい。
中略…
EzJDBCで件数を指定して結果を取得する方法は以下の通りになる…
// テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // CUSTOMERテーブルを照会 List<Customer> list = new EzJDBC().from(_CS).where(_CS.NAME.likeBegin("TAKA")) .orderBy(_CS.AGE.desc(),_CS.NAME.asc()) .limit(10).offset(101) .find(Customer.class);
で、EzJDBCで件数(count)を取得する方法は、以下の通りになる…
// テーブル情報インスタンスを生成 CUSTOMER _CS = new CUSTOMER(); // CUSTOMERテーブルより件数を取得 long count = new EzJDBC().from(_CS).where(_CS.NAME.likeBegin("TAKA")) .orderBy(_CS.AGE.desc(),_CS.NAME.asc()) .limit(10).offset(101) .count();
違いは、findメソッドを呼び出すか、countメソッドを呼び出すかだけ。。。
countメソッドが呼び出された場合は、「limit,offset,orderBy」メソッドの指定は無視され以下のSQLが発行される。
SELECT COUNT(*) FROM (SELECT * FROM CUSTOMER CS WHERE CS.NAME LIKE 'TAKA%') CS_
件数を取得するのに並び順は関係ないからね(^^;)