DBFlute: ScalarSelect

@0.8.6
@Java

(DBFLUTE-380){Java}:
> ConditionBeanで基点テーブルのmax()/min()/avg()/sum()を検索

要は、ConditionBeanで
「select max(MEMBER_BIRTHDAY) from MEMBER where ...」
ってことです。
Date birthday = memberBhv.scalarSelect(Date.class)
                           .max(new ScalarQuery() {
    public void query(MemberCB cb) {
        cb.specify().columnMemberBirthday(); // *Point!
        cb.query().setMemberStatusCode_Equal_Formalized();
    }
});
実は今までちょっとした、
「select max(MEMBER_BIRTHDAY) from MEMBER where ...」
ができなくて、外だしSQLにしていましたが今度からは大丈夫です。

max()/min()/sum()/avg()と選択できます。
sum()とavg()のときは戻り値の方は実質的に数値オンリーですね。

CBの指定の仕方は(Specify)DerivedReferrerと同じような形式です。
specify()を使って単一のカラムを指定します。
こういう感じでCBを「(Query部分を)部分的に利用」するものは、
DBFluteでは基本的にコールバック形式での指定となっております。
(い、い、一部例外あり.....)

dbflute-basic-exampleのBehaviorMiddleTestにてExampleが
ありますので、詳しくはそちらをご覧ください。

https://www.seasar.org/svn/dbflute/trunk/dbflute-basic-example/src/test/java/com/example/dbflute/basic/dbflute/howto/BehaviorMiddleTest.java

【追記】
こちらで自分の記事よりもすごーくわかりすく紹介されています。
ありがとうございます。
http://d.hatena.ne.jp/kimpo/20081126#1227666398