4.1. 抽出条件の設定¶
「クエリ編集」画面、およびリスト集計の「データ参照編集」画面では、レコードの抽出条件を設定できます。リスト集計の「検索設定」は、データ参照を閲覧するユーザが目的の情報に素早く辿り着くための機能ですがそれに対して「抽出条件」は、ユーザに見せたくない情報を設定者側であらかじめ絞っておくための機能です。
4.1.1. クエリ作成時に抽出条件を設定する¶
項目名 説明 WHERE句直接入力 抽出条件を設定する代わりに適用するWHERE句を入力します。動的パラメータを埋め込むことも可能です。OR検索 複数の抽出条件が設定された場合に OR 条件でデータ抽出を行います。チェックが外されている場合は AND 条件が適用されます。上へ下へ 抽出条件の順序を入れ替えます。 テーブル/ビュー/リソース デザイナに追加されているエンティティを選択可能です。 カラム/フィールド 抽出条件の対象とするカラムを選択します。「テーブル/ビュー/リソース」で選択されたエンティティが持つカラムを選択可能です。抽出方法 部分一致、範囲指定などの抽出方法を指定します。 条件値 固定の条件値だけでなく、カレントのユーザコードなどの動的に変化する値を指定することも可能です。 削除 抽出条件一覧からカラムを削除します。
4.1.1.1. 抽出条件を直接入力する¶
注意
直接入力を使用する場合は、テーブルやレコードを壊すことの無いように細心の注意を払ってください。
4.1.2. データ参照作成時に抽出条件を設定する¶
項目名 説明 追加 抽出条件を追加します。 「削除」アイコン 抽出条件一覧からカラムを削除します。 「上へ下へ」アイコン 抽出条件の順序を入れ替えます。 集合関数 抽出パターンを指定します。リスト集計で設定可能なのは「1レコード単位」のみです。対象カラム 抽出条件の対象とするカラムを選択します。選択可能なカラムが表示されます。抽出方法 部分一致、範囲指定などの抽出方法を指定します。 条件値 固定の条件値だけでなく、カレントのユーザコードなどの動的に変化する値を指定することも可能です。
コラム
「1レコード単位」以外の抽出パターンは、サマリ集計を選択している場合のみ設定可能です。SQL上では、下記のように適用されます。1レコード単位 : WHERE句集合関数 : HAVING句注意
リスト集計の「抽出条件」では、OR検索は設定できません。
4.1.3. データ参照時のSQL¶
SELECT [データ参照編集画面で表示されているカラム一覧] FROM ( SELECT [クエリに追加されたカラム一覧] FROM [クエリに追加されたテーブル] WHERE [クエリで設定された抽出条件] ) IM__QUERY__ WHERE [データ参照で設定された抽出条件]
4.1.4. 動的パラメータ¶
パラメータ名 生成される値 <%DYNAMIC_PARAMETER%> API経由でパラメータ値をセットする場合に使用します。
このパラメータが設定された抽出条件が1つでも存在するクエリからは、データ参照を作成できません。
詳しくは、jp.co.intra_mart.foundation.viewcreator.model.Query#executeを参照してください。
<%ENCODING%> SQL実行時のログインユーザに関連づけられたエンコーディング文字列がセットされます。 <%LOCALE%> SQL実行時のログインユーザに関連づけられたロケール文字列がセットされます。 <%NOT_NULL%> IS NOT NULL がセットされます。
※このパラメータを選択した場合は、必ず「抽出方法」で「完全一致」を選択してください。
<%NULL%> IS NULL がセットされます。
※このパラメータを選択した場合は、必ず「抽出方法」で「完全一致」を選択してください。
<%SYSTEM_DATE(*)%> SQL実行時のシステム日付がセットされます。
システム日付データを指定されたフォーマットに従った、文字列がセットされます。
文字列で生成された日付データは、データベースごとに用意された型変換関数に渡されます。
※このパラメータは、必ず日付型またはタイムスタンプ型のカラムに対してセットしてください。
<%USER_ID%> SQL実行時のログインユーザコードがセットされます。 <%REQUEST_PARAMETER(KEY_NAME)%> HttpServletRequest(リクエスト)、または、RenderRequest(ポートレットのリクエスト)から取得した値がセットされます。取得される優先順位は、HttpServletRequestが優先されて取得されます。「KEY_NAME」にはパラメータ名を指定します。
<%TIME_ZONE_ID%> ログインユーザのタイムゾーンIDがセットされます。下記の様にパラメータを追加することで、他の種類のタイムゾーンIDのセットもできます。<%TIME_ZONE_ID(SYSTEM)%> : システムのタイムゾーンIDがセットされます。<%TIME_ZONE_ID(TENANT)%> : テナントのタイムゾーンIDがセットされます。<%TIME_ZONE_ID(USER)%> : ログインユーザのタイムゾーンIDがセットされます。パラメータ省略時と同じです。コラム
<%REQUEST_PARAMETER(KEY_NAME)%>は2014 Spring(Granada)から利用可能です。2016 Spring(Maxima)から、<%REQUEST_PARAMETER(KEY_NAME)%>でRenderRequest(ポートレットのリクエスト)が取得可能になりました。コラム
- <%REQUEST_PARAMETER(KEY_NAME)%>の使用例
検索設定の場合
タグが受け取る引数として、リクエストパラメータのキー名を任意に指定します。
データ参照を表示した際に指定したリクエストパラメータを受け取ることができます。![]()
抽出条件の場合
タグが受け取る引数として、リクエストパラメータのキー名を任意に指定します。
データ参照を表示した際に指定したリクエストパラメータを受け取ることができます。![]()
ポートレットで利用する場合
メニューから「サイトマップ」→「ポータル - ポートレット一覧」を選択します。編集アイコンをクリックし、「ポートレット編集」画面を開きます。基本設定のページ引数に抽出条件で設定したタグのキー名を指定します。
「ポートレット編集」画面のページ引数で指定したリクエストパラメータを受け取ることができます。![]()
コラム
- <%SYSTEM_DATE%>で、1時間前、前日などの指定をする
パラメータ<%SYSTEM_DATE(yyyy/MM/dd HH:mm)%>は、実行時のシステム日付がセットされますがフォーマット文字列部分に、+演算子や-演算子を用いた記述が可能です。
- システム日付の1時間前をセットしたい場合
<%SYSTEM_DATE(yyyy/MM/dd HH-1:mm)%>
- システム日付の前日をセットしたい場合
<%SYSTEM_DATE(yyyy/MM/dd-1 HH:mm)%>※演算子には、+と-のみ使用できます。※演算子の前後にスペースは入れないようにしてください。コラム
下記のファイルを編集することでオリジナルの動的パラメータを作成することもできますWEB-INF/conf/viewcreator-config.xml例) LOCALEパラメータの設定と実装例<param> <param-name>LOCALE</param-name> <class-name>jp.co.intra_mart.foundation.viewcreator.params.SystemParameterLocale</class-name> </param>パラメータ名(<param-name>タグの値)には半角大文字の英字とアンダースコアのみを使用します。<class-name>の値にはjp.co.intra_mart.foundation.viewcreator.SystemParameterインタフェースの実装クラスを指定します。public class SystemParameterLocale implements SystemParameter { @Override public String get(final String syskey) { final AccountContext context = Contexts.get(AccountContext.class); return context.getLocale().toString(); } }上記変更を反映するにはサーバの再起動が必要です。コラム
<%TIME_ZONE_ID%>は2024 Autumn(Jasmine)から利用可能です。
4.1.4.1. 動的パラメータを利用可能な個所¶
定義の種類 画面・設定項目 データの扱い クエリ クエリビルダ 抽出条件(抽出方法が直接入力のとき) そのまま利用 抽出条件(抽出方法が直接入力以外のとき) 自動変換 WHERE句直接入力 そのまま利用 Viewの作成 利用不可 SQLビルダ SQL そのまま利用 データ参照 抽出条件 自動変換 検索設定 自動変換
コラム
使用例
以下は「SQLビルダによるクエリの作成」の「SQL」で利用する場合の記述例です。imm_user テーブルからレコードを取得するときの条件として user_cd に指定する値を <%REQUEST_PARAMETER(KEY_NAME)%> から取得します。このとき、<%REQUEST_PARAMETER(KEY_NAME)%> 全体をシングルクォーテーションで囲っています。SELECT * FROM imm_user WHERE user_cd = '<%REQUEST_PARAMETER(userCd)%>'コラム
<%REQUEST_PARAMETER(KEY_NAME)%> で受け取ったデータの中に ‘ (シングルクォーテーション)が含まれている場合、’’ (シングルクォーテーションを2つ連続して記述)に変換されます。