ワイルドカードを使ったlike
記述 name like ('%/*dto.name*/%') 期待 name like ('%名前%') 結果 name like ('%'名前'%')
バインド変数に自動的にシングルクォーテーションが付くので、こういう書き方はできないんですね。ドキュメントを読んでみると
ワイルドカードを使いたい場合は、メソッドの引数の値に埋め込みます。 「"COT"を含む」という条件を指定する場合は、以下のように引数の値にワイルドカードを埋め込みます。
employeeDao.findEmployees("%COT%");
なるほど。でも実際は変数になる事が多いので変数に設定しないといけませんね。今回の場合は私はDtoを引数にしているので、Dtoの中のフィールドに%を付与した値を設定しないといけませんね。しかし…SQLの方に
/*IF dto.name != ''*/name like ('%/*dto.name*/%')/*END*/
なんて書いてあるので、むやみにDtoに%を追加するわけにもいかず、
if (!StringUtils.isEmpty(dto.getName())) dto.setName("%" + dto.getName + "%");
と書かないといけないのがもどかしい(>_<)