[Seasar-user:8884] [DBFlute] 動的にSQLを生成する方法

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 7月 2日 (月) 17:46:05 JST


いつもお世話になっております。
丸岡です。

DBFluteを利用しています。
現在、プログラムロジックでSQLを自動生成する要件があります。

例:名称を「あ」,「い」で曖昧検索を行ないたい場合、下記のように
UNIONでSQLを連結したいのです。
この検索条件の個数は不定であるため、UNIONの個数も不定です。

(select
  xxx
from
  tbl1
where
  name like ?)
union
(select
  xxx
from
  tbl1
where
  name like ?)
union
 :
 :

上記のようなSQLの場合、sqlファイルを予め作成しておくことは不可能ですよね?
そこで、ロジック中で上記のSQLを生成しています。
このSQLを実行するには、S2DAOのドキュメント「埋め込み変数コメントを利用する」
の内容にしたがって、実装するしかないのでしょうか?
この場合、SQLインジェクション対策などをプログラマ側で実装しなければならないのですよね?
ですので、できればフレームワークの機能を利用してそのあたりの問題をクリアしたいと
考えています。


例えば XXXXDaoクラスに
    public Entity[] dynamicXxxSql(String sql, List condition);

のようなメソッドを追加すれば、引数の1つ目がプログラムで生成したSQL
2つ目の引数をリストで渡せば、PreparedStatementのパラメタにセットしてくれる
ようなことはできませんか?

既にこのようなことが可能でしたらその方法を教えていただけませんでしょうか?
また、もし、現在そのような仕組みが無いようでしたら
要望として挙げさせていただきたいです。




Seasar-user メーリングリストの案内