[Seasar-user:399] Re: メールアーカイブ

B isid.co.jp Yasuo Higa higa
2004年 3月 3日 (水) 12:54:49 JST


<[E-MAIL ADDRESS DELETED]> の、
   "[Seasar-user:385] Re: メールアーカイブ" において、
   ""HABU Akihiro(羽生章洋)" <[E-MAIL ADDRESS DELETED]>"さんは書きました:

ひがです。

> ここから
> ↓↓↓↓↓↓↓↓↓↓↓↓
> >     ${EmployeeView}
> >     WHERE empno = ?{empno}
> ↑↑↑↑↑↑↑↑↑↑↑↑
> ここまで
> >   </query>
> 
> ・・・が、何気に渋い!(^^)
> 
> これとか、すごく楽しい。
> >     ${EmployeeView}
> >     <where>
> >       <and condition="salary ge 0">salary ge ?{salary}</and>
> >       <and condition="job is not null">job = ?{job}</and>
> >     </where>
> 
> いや、そんだけでつ。
> 
WHERE句だけが違うSQL文って結構あるじゃないですか。
同じ部分は1つにまとめて置きたいなぁと思ったわけです。
Just Ideaなので、いろいろ突っ込んでください。

前のSqletのようにcaseタグを使うのはかったるいと思い、
and,orタグの中にcondition属性を含めてみました。

<and prefix=" (" surfix=")">
  <or condition="foo is not null">foo = ?{foo}</or>
  <or condition="bar is not null">bar = ?{bar}</or>
</and>
なんてのも登場します。
fooもbarも定義されていなければ、何も出力しないけど、
1つでも登録されていれば
... AND (foo = ?{foo})
... AND (bar = ?{bar})
... AND (foo = ?{foo} OR bar = ?{bar})
のように展開されるというものです。
---
Yasuo Higa <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.



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