[Seasar-user:21092] Re: S2DAO SQLのスマートな記述方法について

今田 昇 [E-MAIL ADDRESS DELETED]
2011年 10月 21日 (金) 16:21:07 JST


pianyiさん こんにちは。
今田と申します。

普段からS2Daoを利用させてもらっています。

B、Cの条件式を2回書かなくて済む方法を期待しておられると思いますが、
私にもそれは見つけられませんでした。

出力内容のないIF文を無くし、
A→B→Cの順番に書き直してみました。
多少は見やすくなっていると同時に、
意図が分かりやすくなっていると思うのですがどうでしょう?

SELECT *
  FROM XXXX
/*BEGIN*/
WHERE
    /*IF form.searchA != null && form.searchA != "" */XXXX.A = 1/*END*/
    /*IF (form.searchB != null && form.searchB != "") || (form.searchC != null && form.searchC != "") */
      /*BEGIN*/AND (
        /*IF form.searchB != null && form.searchB != "" */XXXX.B = 2/*END*/
        /*IF form.searchC != null && form.searchC != "" */OR XXXXX.C = 3/*END*/
      )/*END*/
    /*END*/
/*END*/


-----Original Message-----
From: [E-MAIL ADDRESS DELETED] [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of [E-MAIL ADDRESS DELETED]
Sent: Thursday, October 20, 2011 6:59 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:21091] S2DAO SQLのスマートな記述方法について

いつも大変お世話になっております。
pianyi と申します。 


現在、S2DAOを使用し、SQLファイルの記述を行っております。
やりたい事の実現は出来たのですが、もっと良い記述方法は無いでしょうか。


実際のSQL:
SELECT *
  FROM XXXX
/*BEGIN*/
 WHERE
    /*BEGIN*/
    (
      /*IF form.searchB != null && form.searchB != "" */XXXX.B = 2/*END*/
      /*IF form.searchC != null && form.searchC != "" */OR XXXXX.C = 3/*END*/
    )
    /*END*/
    /*IF form.searchB != null && form.searchB != "" *//*END*/
    /*IF form.searchC != null && form.searchC != "" *//*END*/
    /*IF form.searchA != null && form.searchA != "" */AND XXXX.A = 1/*END*/
/*END*/
;

同じ条件が2箇所に必要で、且つ下の方は出力内容の無いIF文になっています。

下記URLの記述を見て試してみましたが、うまく動作しませんでした。(記事が古すぎますよね…)
http://d.hatena.ne.jp/higayasuo/20040510/1084142290

条件Aのみ、条件A+B+C、条件B+Cのみ、条件なし の全パターンでSQLが実行され
且つ、もっとスマートな記述方法がありましたらご教授願います。

以上、よろしくお願いいたします。



開発環境: 
・Java1.6.0_24 
・Oracle11g
・s2-dao-1.0.51.jar 
・s2-extension-2.4.44.jar 
・s2-framework-2.4.44.jar
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user


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