データベースに任意のSQLを実行(custom)

任意のSQLを組立て実行します。
標準のSQL実行コマンド(select/create/update/delete)では実行できないSQLが実行できます。
使用可能箇所
run
Sub Tags
template, value

属性
id
処理結果(返却値/処理件数)を管理するID
type
transaction
トランザクション設定ファイルのXMLファイル名(例:default)
database
トランザクション設定ファイル内の接続設定のコード
when
多くのTagsでサポートしている「実行可否判定のための属性」です。 (こちらを参照)

SQLテンプレート(template)

customタグを用いてSQLを実行する際のSQLテンプレートを定義します。
使用可能箇所
custom
Sub Tags
記述不可


CDATAにてSQLを定義。SQLはvalueタグにて動的に変換する箇所は{@キー名}を記述する他、
コマンド・テキストにも対応します。
 
[コマンド] SQLテンプレートに以下を記述することで特殊な機能を提供します。
@SELECT:クラス名
JDBCResultIFを実現したクラスを指定することで生成・返却されます。
ListResultを継承することでMockやファイル・データを容易に扱えます。
@UPDATE:件数
intデータを指定することで更新処理のMock実装が行えます。

(記述例) templateタグに記述したSQLを実行します。

    <custom id="HOSCORE_LIST" type="find">
     <template>
      <![CDATA[
       SELECT * FROM SCORE_AVERAGE, T_SCORE
        WHERE SCORE_AVERAGE.AVERAGE < T_SCORE.SCORE
      ]]>
     </template>
    </custom>
  

SQLテンプレートの動的な書換え(value)

使用可能箇所
custom
Sub Tags
記述不可

属性
key
データ取得元のDataBean項目名
val
固定値を定義できる他、コマンド・テキストが使用できます。
map
SQLの変換を行う箇所のキー名

(記述例) valueタグでSQLテンプレート内の{@CURRICULUM_CODE}をBeanの値で置換えて実行します。

    <custom id="HOSCORE_LIST" type="find">

     <!-- {@CURRICULUM_CODE}をBeanの値で置換え -->
     <value key="CURRICULUM_CODE" map="CURRICULUM_CODE" />

     <!-- SQLテンプレート -->
     <template>
      <![CDATA[
       WITH SCORE_AVERAGE AS(
        SELECT AVG(SCORE) AS AVERAGE FROM T_SCORE
         WHERE CURRICULUM = '{@CURRICULUM_CODE}'
       )
       SELECT * FROM SCORE_AVERAGE, T_SCORE
        WHERE SCORE_AVERAGE.AVERAGE < T_SCORE.SCORE
       ]]>
     </template>
    </custom>
  

©Camel engineering LLP