iBATISのFAQ2

LIKE句を使うには(iBATIS FAQの意訳)

iBATISのMapはPreparedStatementを使用するので、$VALUE$に「%」か「_」を含ませなければなりません。例えば、

select * from foo where value like '青%'

を実行したい場合、

select * from foo where value like #parm#

と書くと

select * from foo where value like ?

となります。そのためparmというパラメタに「青%」を設定する必要があります。しかし、このアプローチが好きでないなら、代わりにこの方法が利用できます。

select * from foo where value like '$parm$%'

この場合もPreparedStatementを使用しますが、$parm$にはそのまま変数が挿入されます。したがって同じ結果を得るためには「青」をparmを設定すれば良いでしょう。なおシングルクォーテションが確実にエスケープされるようにしてSQLインジェクション攻撃に注意してください。