ライトニングの後...

@DBFlute
皆様、お疲れ様でした。

「Seasar Conference 2009 Autumn」終わりました。
「DBFlute ライトニング外だしSQL」に参加下さった方、
本当に本当にありがとうございました。
スピーカーとして壇上に上がり喋りながらも、
「あぁ、このセッション地味だなぁ」と頭によぎっていたのですが、
とてもとても大事なことをしっかり伝えることができたんじゃないかと
思っています。単なる外だしSQLですが、DBFluteの特徴がギュッと
詰まった仕様になっていて、いつかセッションやりたいと思っていました。
外だしSQLだけで1セッションなんてなかなかないんじゃないかと、
そもそも2WaySQLを知らない人のためにもいつかやらなきゃと。

DBFluteをそもそも知らない人はDBFluteの紹介ページがありますので、
気が向いたときにでもぜひどうぞ。


当初は、昼間の私用のこともあり、今回はセッションなしで、
ユーザの集いもなしにしようかなと思っていたのですが、
ちょっと無理してでもやって良かったと本当に思っています。
ちょっとLikeSearchをやり切れなかったのでここで:
(ライトニング外だしSQLの続編ということで)

セッションで固定で前方一致するやり方をおみせしましたが、
ConditionBeanのLikeSearchOptionを外だしSQLでも
利用することができます。

ParameterBeanのプロパティの定義のところで、曖昧検索の
ためのプロパティのところで「:like」と付与します。
バインド変数コメントの箇所ではワイルドカードもテスト値に含めます。
-- !df:pmb!
...
-- !!String memberName:like!!
...
where MEMBER_NAME like /*pmb.memberName*/'A%'
すると、ParameterBeanの該当プロパティの設定で、
LikeSearchOptionを指定することができるようになります。
そうすると、前方一致・後方一致・中間一致を指定することができ、
かつ、曖昧検索のエスケープ処理も自動で行われるようになります。
String s = "100%Juice";
pmb.setMemberName(s, new LikeSearchOption().likePrefix());
where MEMBER_NAME like '100|%Juice%' escape '|'
このようにLikeSearchOptionを使うと以下のメリットがあります;

o エスケープ処理が自動で施される(引数の値の調整も含む)
o プログラムで動的に一致の方向を変えることができる

「dbflute-basic-example」プロジェクトの
BehaviorMiddleTestにてExample実装があります。
(ページングとかもあるのでぜひ参考にして下さい)
最後にもう一度:

DBFluteはConditionBeanがウリでもなく外だしSQLがウリでもなく
その二つのバランスがウリなのです。