[seasar-dotnet:2295] Re: [DBFlute.NET]OutsideSQLでの総件数取得

kubo [E-MAIL ADDRESS DELETED]
2013年 6月 13日 (木) 22:21:56 JST


久保(jflute)です

uparrowさん、こんばんは

ささっとJava試したのですが、要領は同じです。
ページングのPmbのExクラスで IsPaging をオーバーライドして、
問答無用で false を戻すようにして、
outsideSql().entityHandling().selectEntity() で Integer.class を
戻り値に指定すれば、カウントを取得することができます。

// Exクラス
public class PurchaseMaxPriceMemberPmb extends BsPurchaseMaxPriceMemberPmb {
    @Override
    public boolean isPaging() {
        return false;
    }
}

// 呼び出し
PurchaseMaxPriceMemberPmb pmb = new PurchaseMaxPriceMemberPmb();
memberBhv.outsideSql().entityHandling()
    .selectEntity(MemberBhv.PATH_selectPurchaseMaxPriceMember, pmb,
Integer.class);

で、Exクラスにベタで書いちゃったらもちろん、
通常のページングができなくなってしまいますので、
Exクラスで「問答無用カウント検索モード」プロパティを作成して、
呼び出し側で選べるようにしておくと良いと思います。

public class PurchaseMaxPriceMemberPmb extends BsPurchaseMaxPriceMemberPmb {
    protected boolean _問答無用カウント検索モード;

    public void prepare問答無用カウント検索モード() {
        _問答無用カウント検索モード = true;
    }

    @Override
    public boolean isPaging() {
        return _問答無用カウント検索モード ? false : super.isPaging();
    }
}


...
......
っって、ここまで書いておいて、
そっか継承モデルじゃなくって partial だったから、
オーバーライドできないですねー(><。
なので、カウント検索用のPmbクラスを手動作成して、
PurchaseMaxPriceMemberPmbを継承して
オーバーライドすると良いでしょう。
(したら、変な名前のプロパティは不要ですね)


※今後もpartialしなきゃ良かったとずっと言い続けそう...


2013/6/13  <uparrow @ nifty.com>:
> 志村さん
> uparrowです。
>
> アドバイスありがとうございます。
> 通常のカウントであれば、こちらの方法を使っているのですが、
> 複雑な問い合わせのため、OutsideSQLを利用した際のカウントの方法が
> 知りたかったのです。
>
> よろしくお願いします。
>
>> 志村です。
>>
>> http://dbflute.seasar.org/ja/manual/function/ormapper/behavior/select/selectcount.html
>>
>> で良いのでは。
>>
>>
>> 2013年6月13日 9:48 <uparrow @ nifty.com>:
>>
>> > uparrowと申します。
>> >
>> > OutsideSQLを利用する場面で
>> > ページング検索を行う他に、同じSQLの総件数のみ取得したい場面があります。
>> >
>> > ページング検索用にSQLファイルを作成
>> > 総件数取得用にSQLファイルを作成しようかと思うのですが
>> > select句が違うだけでほぼ同じSQL文なので
>> > ちょっと無駄だなぁと思っています。
>> >
>> > select count(*)
>> > の値だけを取得するよい方法は無いでしょうか?
>> >
>> > よろしくお願いいたします。
>> >
>> > _______________________________________________
>> > seasar-dotnet mailing list
>> > seasar-dotnet @ ml.seasar.org
>> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>> >
>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet


seasar-dotnet メーリングリストの案内