S2DaoのSQLコメントでfor文!?


は今できません。というか構造的にちょっとつらいです。
/*FOR keyword : keywordList*/
and SEARCH_KEYWORD like '%' || /*keyword*/'dummy' || '%'
/*END*/
基本、S2DaoSQLの解析が静的(初期化時のみ)なので、
動的に増やされるBind変数コメントを処理できません。
配列の扱いなので、うまく色々工夫すればできなくもないかもしれませんが、
今まで「欲しい」ってのを聞いたことがないので、あまりニーズないのかなぁ!?
なにはともあれば、自分のプロジェクトで異常に欲しくなった。
というかそれが無いと厳密に実現で不可能。{外だしSQLでも実現できないとはぁ!}
幸い、仕様的に「条件は5つまで」という制約があったので、べたっと5つの変数と
IF文をつくりました。その代わり、設定で「6つまでに変更」とかはし辛くなりました。
意外な盲点・・・
実はConditionBeanで足りるSQLであれば、上記のようなことが(一部)できます。
先日作ったLikeSearchOptionでは"光 水槽 麻雀"というように空白区切りの
キーワードをSplitしてそれぞれAND条件で中間一致でつなげて条件作成可能です。
そりゃそうなのです。ConditionBeanはWhere句のみ限定で動的解析をしています。
なので、その都度のRequestで自由にBind変数の増減が可能です。
パフォーマンスもWhere句限定であればほとんど劣化ありません。
ただ、上記の例では、UNION使ったり条件が複雑なのでSql2Entityで外だしSQLです。
...DBFluteで動的に解析する外だしSQLメソッドを作ってみようかな
そのついでに
「このメソッドは外だしSQLを使うメソッドだよ」チェックありメソッド
も付けてみよう。みーんな外だしSQLファイルの名前間違えたり、
C#だと埋め込まれたリソースにし忘れたりで、かつ、エラーメッセージが
素人にはわけわからないので嫌な思いしてる。