iBatisで動的なSQLを発行する方法ですが、sqlMap.xmlの内容を編集するだけです。

以下に簡単な例をあげておきます。(sqlMap内のselectタグだけ記載しています)

<select id=”getUser2″ resultMap=”resultUser”>
SELECT ID AS id,
NAME AS name
FROM USER_TABLE
<dynamic prepend=”WHERE”>
<isGreaterThan property=”id” compareValue=”0″>
ID=#id#
<isGreaterThan>
</dynamic>
</select>


やはり簡単で、見ればわかるような内容です。

ちょっと補足すると、
<dynamic prepend=”WHERE”>
このタグ内の情報が動的に生成されるよという宣言みたいなものです。
<isGreaterThan property=”id” compareValue=”0″>
idの値が0よりも大きい場合に、タグ内の情報が追加されます。
isGreaterThan以外にも以下のような比較が可能です。

  • isEqual
  • isNotEqual
  • isGreaterThan
  • isGreaterEqual
  • isLessThan
  • isLessEqual

さらに上記以外にも、単一エレメントに対するプロパティの比較が可能です。

  • isPropertyAvailable
  • isNotPropertyAvailable
  • isNull
  • isNotNull
  • isEmpty
  • isNotEmpty

これらを組み合わせて動的にSQLを発行することができます。
パラメータ等の情報が変わらなければ、Java側は修正せずに発行するSQLを変更することが可能となります。
動的SQLを簡単に作れ、さらに簡単に修正できるので、試行錯誤しながら実行してみると良いかもしれません。

ブログ内の関連する記事