例
SQLMap.xml
<select id="select" parameterclass="jp.ne.sample.Sample1" resultclass="jp.ne.sample.ResultSample">
SELECT
*
FROM
sample_table
WHERE
id=#id#
OR
day=$day$
</select>
- #id#
- JavaBeansのidという変数を埋め込む。
こちらはバインド変数になる。
- $day$
- JavaBeansのidという変数を埋め込む。
こちらはバインド変数ではなく直接埋め込まれる。
''でくくったりエスケープが必要。
・SQLインジェクション攻撃を受ける
・変数値が変わるごとにSQLが再利用されない
のため、使用しないこと。
条件によりWHERE句を変える
<select id="select" parameterClass="jp.ne.sample.Sample1" resultClass="jp.ne.sample.ResultSample">
SELECT
*
FROM
sample_table
<dynamic prepend="WHERE">
<isNotEmpty property="id">
id=#id#
<isNotEmpty prepend="OR" property="day">
day=$day$
</isNotEmpty>
<isEmpty property="id">
<isNotEmpty prepend="OR" property="day">
day=$day$
</isNotEmpty>
</isEmpty>
</dynamic>
クラス名の省略
<typeAlias alias="product" type="com.ibatis.example.Product" />
<parameterMap id="productParam" class="product">
XML定義
★PDFから
<![CDATA[ hoge ]]>
< >
の2文字はSQL内で使うがXML予約語のためそのまま使えない。
<![CDATA[ > ]]>
とすることで記述できるが見づらいので、はじめから
SQL文全体を常にくくればよい。
例:
<select ・・・> <![CDATA[ SELECT ・・・ ]]> </select>
この場合 <!-- コメントは記述できない。