ユーザ用ツール

サイト用ツール


alpersist:検索
no way to compare when less than two revisions

差分

このページの2つのバージョン間の差分を表示します。


alpersist:検索 [2019/02/12 00:06] (現在) – 作成 - 外部編集 127.0.0.1
行 1: 行 1:
 +====== 検索 ======
 +
 +  * データを選択的に読み込むために、検索用のメソッドを用意しています。
 +  * 検索条件等を指定して、複数のレコードを読み込みます。
 +  * ベースになるデータストレージの機能によっては、フルスペックで使えない場合があります。
 +
 +===== 簡単な使い方 =====
 +
 +<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