データベースに任意のSQLを実行(custom)
任意のSQLを組立て実行します。
標準のSQL実行コマンド(
select/
create/
update/
delete)では実行できないSQLが実行できます。
- 使用可能箇所
- run
- Sub Tags
- template, value
属性
- id
- 処理結果(返却値/処理件数)を管理するID
- type
-
- fill
- 単一検索 ※複数件取得できた場合は先頭の1件のみ返却 (Map型を返却)
- find
- 複数件検索 (List型を返却)
- create
- レコードの登録
- update
- レコードの更新
- delete
- レコードの削除
- 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>