S2daoで/*IF 〜*/

S2Daoで/*IF 〜 */ 〜 /*END*/が、うまくいかないと思っていたら@Argumentsで使用する変数名を指定してあげなければいけない事を知った。

http://s2dao.seasar.org/ja/tiger-annotation.html#ArgsAnnotation
を見てもJAVA脳じゃないのか、まったく理解できずググってたらIT Mediaか何かの記事で書いてあったサンプルを見てもしや!?と気づいたしだい。

で、よくよくドキュメントを読んでみると
メソッドの引数をSQL文で参照できるように、
org.seasar.dao.annotation.tiger.Argumentsアノテーションを使用し
メソッドの引数名を指定します。メソッドの引数名は、リフレクションで
取得できないためです。

http://s2dao.seasar.org/ja/s2dao-tiger.html#ArgsAnnotation

書いてあるっちゃ書いてある。
ただ、この文章も@Argumentsに気づいた今なら理解できるけど・・・
@Queryと/*IF 〜*/と?と@Argumentsの関係性が図で欲しかったなぁ。

@Arguments({"lang","typeId","publicFrom","keyword","like_keyword","order"})
@Query(" LANG = /*lang*/"
	+ " /*IF typeId != 0 */ AND TYPE_ID = /*typeId*/ /*END*/" 
	+ " /*IF publicFrom != null */ AND PUBLIC_FROM = /*publicFrom*/ /*END*/"
	+ " /*IF keyword != '' */ AND MEMO like(/*like_keyword*/) /*END*/"
	+ " /*IF order == 1 */ ORDER BY UPDATE_DATE DESC /*END*/"
	+ " /*IF order == 2 */ ORDER BY UPDATE_DATE ASC /*END*/"
)
public StaffAnnounce[] search(String lang,
	Integer typeId,
	String publicFrom,
	String keyword,
	String like_keyword,									
	Integer order,
	PagerCondition dto);



やっぱりJAVA(に限った事ではないだろうけど)はドキュメントを隅から隅まで3回くらいは読んだ上でサンプルを動かし、MLを眺めないと使えないのかな。。