[Seasar-user:3967] [S2Dao]要望:外だしSQLのSQLコメント内でワイルドカードを付与したい

kubo [E-MAIL ADDRESS DELETED]
2006年 6月 26日 (月) 21:41:57 JST


久保です。


外だしSQLで以下のような条件を書くとします。

/*IF ab.ArtistId != null*/and artist.artist_id = /*ab.ArtistId*/'aTSF'/*END*/
/*IF ab.TitleName != null*/and calcTitle.title_name like /*ab.TitleName*/'栄光への脱出%'/*END*/
/*IF ab.ArtistName != null*/and calcArtist.artist_name like /*ab.ArtistName*/'アリス%'/*END*/

title_nameとartist_nameはlikeを使って前方一致検索します。


外だしSQLの場合、どのように検索するかが隠蔽されて
プログラムではパラメータを与えてあげるだけとなります。

検索の仕様が変わったときなど、外だしSQLファイルだけを修正して
変更することができます。個人的にこれはとても良いと感じています。

しかし、前方一致検索だけは'アリス%'というように、
実際の値にワイルドカードを付けてあげなければなりません。
そしてそれはプログラムで付与しなければなりません。

すると、少しだけプログラムの方が、どのように検索をするのかを
意識することになります。(%付いたままでは完全一致ができない)
外だしSQLの修正だけでは、前方一致か完全一致かの切換えができません。

これは特に大きな問題ではありませんが、外だしSQLを書いていて
ふと「ちょっと面倒くさいな」と単に思った次第であります。

/*ab.ArtistName*/ → /*ab.ArtistName[%]*/
とか
/*ab.ArtistName*/ → /*ab.ArtistName + '%'*/
など

SQLファイルの中で指定できるようにするのはどうでしょか?
(要望というよりちょっとした提案です)



-- 
kubo <[E-MAIL ADDRESS DELETED]>





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