This is a cache of http://dbflute.seasar.org/ja/manual/function/generator/task/sql2entity/pmbclassoption.html. It is a snapshot of the page at 2024-11-13T00:21:20.812+0000.
ParameterBeanのクラスオプション | DBFlute

ParameterBeanのクラスオプション

ページング検索など、ParameterBeanのクラスに付けるオプションについてのページです。

ページング検索のオプション

自動生成する ParameterBean にページング機能を拡張することができます。 ParameterBeanのクラス名の指定部分の後ろに、extends Paging と付与します。@since 0.9.7.5 (より前では extends SPB ※0.9.7.5以降でも利用可能)

e.g. ページング検索用のParameterBeanを生成 @OutsideSql
-- !df:pmb extends Paging!
-- !!AutoDetect!!

select ...
  from ...

このように指定することで ParameterBeanは、SimplePagingBean を継承したものになり、paging() メソッドでページング条件の指定ができるようになります。このメソッドは、ConditionBeanにおける paging() メソッドと同じ仕様です。

e.g. ページング検索用のParameterBeanを生成 {1ページ20件で3ページ目} @Java
SimpleMemberPmb pmb = new SimpleMemberPmb();
pmb.paging(20, 3);
... = memberBhv.outsideSql().manualPaging().selectPage(..., pmb, ...);

TypedParameterBean においては、そのSQLが ManualPaging を期待するかどうか自動判別されます。 ManualPaging と判別された場合、AutoPaging で呼び出してしまうなどの間違いをコンパイル時に検知できます。 具体的には、そのSQL文の中にページング条件の要素(MySQLなら limit 句、Oracleなら rownum など)が含まれているかどうかで判別されます。

ただし、この判定はSQLをパースしているわけではなく単なる文字列によるため、誤判定が発生する可能性もあるかもしれません。 判別結果がうまく要件と一致しない場合は、明示的に(強制的に) Manual なのか Auto なのかをこのページング検索のオプションで指定することができます。"extends ManualPaging" とすると ManualPaging、"extends AutoPaging とすると AutoPaging になります。

e.g. ManualPaging であることを明示的に指定 (自動判別に頼らない) @OutsideSql
-- !df:pmb extends ManualPaging!
-- !!AutoDetect!!

select ...
  from ...