This is a cache of http://dbflute.seasar.org/ja/manual/function/ormapper/behavior/select/selectlist.html. It is a snapshot of the page at 2024-11-13T00:24:42.615+0000.
selectList(cb) (リスト検索) | DBFlute

selectList(cb)

概要

基本概念

ConditionBeanをもとにリスト検索 をします。

会話上では、せれくとりすと と表現します。文脈上、抽象的で伝わりにくい場合は Behaviorのせれくとりすと(メソッド)ConditionBeanのせれくとりすと などと言うとわかりやすいでしょう。

実装方法

実装の流れ ※1.1.x (Java8版)

Behaviorの selectList() を呼び出し、ConditionBeanを指定します。

e.g. selectList()の実装手順 (Eclipseでコード補完) {MEMBER} @Java
memberBhv.selL // .selL と打って enter
--

// メソッドが補完されて、引数の "cbLambda" が選択状態に
memberBhv.selectList(cbLambda);
--

// cbLambdaの部分で、_ll (補完テンプレートが有効なら)
memberBhv.selectList(_ll);
--

// Lambda引数名はcbにして...
memberBhv.selectList(cb -> {
    cb.query().set... // tabでカーソル移動してcbで検索条件
})
--

// セミコロン ';' を打って ctrl+2, L で戻り値補完
ListResultBean<Member> memberList = memberBhv.selectList(cb -> {
    cb.query().set...
});
_fo // _fo とまで打って ctrl+space (補完テンプレートが有効なら)
--

// ListResultBeanは、java.util.Listの実装クラスなので、そのままループできる
ListResultBean<Member> memberList = memberBhv.selectList(cb -> {
    cb.query().set...
});
memberList.forEach(member -> { // Lambda引数名は、Entityっぽい感じに
    ... = member.get...
});

実装の流れ ※1.0.x (Java6版)

e.g. selectList()の実装手順 (Eclipseでコード補完) {MEMBER} @Java
memberBhv.selL // .selL と打って enter
--
// セミコロン ';' を打って ctrl(or command) + 2 そして L
memberBhv.selectList(cb);
--
ListResultBean<Member> memberList = memberBhv.selectList(cb);
fore // fore とまで打って ctrl + space そして enter
--
ListResultBean<Member> memberList = memberBhv.selectList(cb);
for (Member member : memberList) {
    // ListResultBeanは、java.util.Listの実装クラス
}

メソッド仕様

引数

該当のBehaviorに対応するテーブルの ConditionBean となります。(1.1.xよりコールバック)

ConditionBeanが必ず存在することが前提であるため、nullを指定した場合は例外発生します。 検索条件がない検索をする場合でも、必ずConditionBeanのインスタンスが必要です。

戻り値

ListResultBean(java.util.Listの実装クラス) 型となります。

tableDbName
検索の基点となったテーブル名
allRecordCount
検索結果の件数 (List.size()と全く同じ値)
orderByClause
ConditionBeanで指定した order-by 情報

検索結果が一件もない場合でも、nullは戻らず、空のリストが戻ります。

オーバーライド

オーバーライドして拡張することもできますが、通常は必要ありません。selectList() をオーバーライドした場合は、純粋にアプリで明示的に呼び出したリスト検索だけの拡張となり、他の Behavior のメソッドから内部的に呼び出されているリスト検索も含めて一緒に拡張したい場合は、doSelectList() をオーバーライドすることで実現できます(詳しくはソースを読んで下さい)。