DBFluteでの外だしSQLのちょっとしたテクニック
そろそろブログの下書きがたまってきたというか、
2ヶ月以上も下書きがたまっているので徐々に公開していこうと思います。
というわけでDBFluteを使っている時のちょっとしたテクニックです。
例えば、
SELECT h.a FROM hoge h WHERE /*IF pmb.fuga != null*/h.fuga = /*pmb.fuga*/''/*END*/ /*IF pmb.fugafuga != null*/AND h.fugafuga = /*pmb.fugafuga*/''/*END*/
とあった場合、
pmb.fugaに値がセットされていれば良いのだが、
pmb.fugafugaにしか値がセットされていない場合、
SELECT h.a FROM hoge h WHERE AND h.fugafuga >= 'fugafuga'
となりSQL実行エラーになってしまいます。
BEGINコメントを使えば良いらしいのですが、
それよりも、
SELECT h.a FROM hoge h WHERE 1 = 1 /*IF pmb.fuga != null*/AND h.fuga = /*pmb.fuga*/''/*END*/ /*IF pmb.fugafuga != null*/AND h.fugafuga = /*pmb.fugafuga*/''/*END*/
とWHEREの次に「1 = 1」と書けばおkです。
先ほどのを条件でSQLを実行してみると
SELECT h.a FROM hoge h WHERE 1 = 1 AND h.fugafuga >= 'fugafuga'
となり無事にSQLは実行されます。
1 = 1と書いてもパフォーマンスには影響ござぁせん旦那。
ていうか他に方法があるなら誰が教えてくだしあ(><)