Java/iBATIS

Last-modified: 2013-03-15 (金) 13:52:54

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>

この場合 <!-- コメントは記述できない。