内容へ移動
alone-doc
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
バックリンク
メディアマネージャー
サイトマップ
ログイン
>
メディアマネージャー
サイトマップ
現在位置:
start
»
alpersist
»
検索
トレース:
alpersist:検索
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 検索 ====== * データを選択的に読み込むために、検索用のメソッドを用意しています。 * 検索条件等を指定して、複数のレコードを読み込みます。 * ベースになるデータストレージの機能によっては、フルスペックで使えない場合があります。 ===== 簡単な使い方 ===== <code ruby> def action_search() param = { :where=>{ :age=>20 } } results = @person.search( param ) results.each {|data| puts data.values, "<br>" } end </code> * パラメータとして、検索条件を指定する例です。 * この例では、年齢が20才の人のみ抽出します。 * 検索条件は、AND結合のみです。 ===== 検索条件 ===== 複合条件。HashキーをSymbolで指定した場合は、常に=(イコール)で比較します。 <code ruby> :where=>{ :name=>"Ishikawa", :age=>20 } </code> NULL条件の指定。( SQLでは、name is nullとなる) <code ruby> :where=>{ :name=>nil } </code> 以上、以下などの指定 <code ruby> :where=>{ "age <"=>20 } </code> Like検索 <code ruby> :where=>{ "name like"=>"I%" } </code> ===== 並べ替え順 ===== パラメータに、:order_byキーを追加します。 <code ruby> def action_search() param = { :order_by=>"age desc" } results = @person.search( param ) results.each {|data| puts data.values, "<br>" } end </code> 複数のオーダー指定は、配列で指定します。 <code ruby> :order_by=>["age desc", "name asc"] </code> ===== その他の条件 ===== リミット、オフセット <code ruby> param = { :limit=>2, :offset=>5 } </code> リミットを指定した場合は、検索後、以下のメソッドが有効になります。 <code ruby> # 前ページのオフセット値を得る。前ページがなければnil。 @person.get_previous_offset() # 次ページのオフセット値を得る。次ページがなければnil。 @person.get_next_offset()] </code> 全件数の同時取得 <code ruby> def action_search() param = { :total_rows=>true } @person.search( param ) p @person.search_condition[:total_rows] end </code> ====== SQLを直接発行して検索する ====== * SQLを直接指定して、検索することができます。 * この場合は、オブジェクト生成時に指定したテーブル名及びプライマリキーは使われず、任意のSQLが発行できます。 * RDBをベースに持つPersistクラスしかサポートしません。 * select( "取得するタプル", "FROM句以下", param = {} ) の形式です。 * paramは、上記searchと同様です。 コード例 <code ruby> @persist.select( "t1.*, t2.note" "from t1 inner join t2 using(id) where d=CURRENT_DATE", :order_by=>"create_date desc", :limit=>10, :offset=>20 ) </code> 生成されるSQL <code> select t1.*, t2.note from t1 inner join t2 using(id) where d=CURRENT_DATE order by create_date desc limit 10 offset 20; </code>
alpersist/検索.txt
· 最終更新:
2019/02/12 00:06
by
hirohito
ページ用ツール
文書の表示
バックリンク
文書の先頭へ