S2JDBCで件数を取得する(SELECT COUNT(*))

ページング処理するときlimit, offsetを指定したデータ取得用SQLと、総件数を取得するSQLってSQL自体大体同じ内容なので、何かいい方法があるんじゃないかと思ったら案の定ありました。総件数を取得するには、getCount()メソッドを使うらしい。
Seasar2 - S2JDBC - JdbcManager - SQL自動生成による操作
[CONTAINER-156] S2JDBC の SQL 自動生成による問い合わせで,SELECT COUNT(*) の結果を取得する getCount() メソッドを追加しました.[Seasar-user:12500] - The Seasar Foundation Issues (Deprecated)

そして、whereの内容は大体同じだけど、count取得するほうはlimit, offsetは必要ないので、SimpleWhereのインスタンスを抜き出して以下のようにするといいかも。

// 検索条件
SimpleWhere where = new SimpleWhere()
	.excludesWhitespace() // スペースの場合検索条件に追加しない
	.eq("userName",  bean.getUserName())
	.eq("mail", bean.getMail())
	.eq("deleteFlg", bean.getDeleteFlg());

// 検索
List<User> list = jdbcManager.from(User.class).where(where)
		.orderBy(Operations.asc("id")) // 表示順
		.limit(bean.getLimit()) // 1ページの表示件数
		.offset(bean.getOffset()) // 取得開始位置
		.getResultList();

// 総件数(通常の検索とほぼ同じ検索条件を使う)
Long count = jdbcManager.from(User.class).where(where).getCount();

ちなみに、SimpleWhereでexcludesWhitespaceを呼び出しているのは、画面から取得したパラメータが空文字の場合に検索条件に含めないようにするため。これめちゃ便利。