[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 メーリングリストの案内