[Seasar-user:19117] Re: [S2JDBC]SQLファイルで固定の条件がある場合のBEGIN、ENDコメントについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 1月 8日 (金) 21:00:08 JST


小林 (koichik) です.

Date:    Fri, 8 Jan 2010 19:41:55 +0900
From:    石川祐 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19114] [S2JDBC]SQLファイルで固定の条件がある場合のBEGIN、ENDコメントについて

> こうなって欲しいのですが、実際は以下のSQLになってしまいます。
> 
> -----------------------------------
> select * from employee
> -----------------------------------
> 
> これは仕様ということでしょうか。

仕様です.

http://s2container.seasar.org/2.4/ja/s2jdbc_manager_sqlfile.html#S2Dao譲りのSQLファイル

「BEGINコメントとENDコメントで囲まれた部分に1つも条件に
一致するものがない」場合は,「 BEGINコメントとENDコメントで
囲まれた部分がカット」されます.

> 固定の条件があるならBEGIN、ENDコメントを使用せずに、
> 
> -----------------------------------
> select * from employee
> where delFlg = '0'
> /*IF salaryMin != null*/
> salary >= /*salaryMin*/1000
> /*END*/
> /*IF salaryMax != null*/
> and salary <= /*salaryMax*/2000
> /*END*/
> -----------------------------------
> 
> こう書かなければいけないのでしょうか。

where 句全体を制御する必要がないのですから
それでいいと思いますが,
# 最初の #IF の中に and が必要ですが
BEGIN〜END を使いたければ

select * from employee
/*BEGIN*/
where
/*IF salaryMin != null*/
salary >= /*salaryMin*/1000
/*END*/
/*IF salaryMax != null*/
and salary <= /*salaryMax*/2000
/*END*/
/*IF true*/
and delFlg = '0'
END
/*END*/

とか.
# IF コメントの条件は OGNL 式です.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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