[Seasar-user:19705] Re: [S2JDBC]SQLファイル使用時の挙動について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2010年 5月 7日 (金) 19:00:00 JST
小林 (koichik) です.
Date: Fri, 07 May 2010 04:12:51 +0900
From: Manabu Inoue <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19698] [S2JDBC]SQLファイル使用時の挙動について
> バインドパラメータに Mapを使用した場合に、
> SQLファイル内のバインド変数がMapに存在しない場合は
> 「引数(変数名)が見つかりません」というWARNログが出力されます。
> また、上記の場合でかつ、Map内のエントリが1つの場合、
> SQLファイルのすべてのバインド変数に、変数名が異なるにもかかわらず
> Map内の1つのエントリの値がセットされます。
(略)
> 上記の挙動はS2JDBCの仕様でしょうか?
意図した仕様というわけではないと思いますが,
現状の実装はそうなってますね.
パラメータが 1 つだけの場合,Map でも Dto でも
なく,その値を直接指定することができます.
List<EmployeeDto> results =
jdbcManager
.selectBySqlFile(
EmployeeDto.class,
"examples/sql/employee/selectAll.sql", 10)
.getResultList();
このように渡されたいわば名無しのパラメータも
Map や Dto を渡された場合と同様,内部的には
Map で管理しているため,エントリが 1 つの場合は
名無しのパラメータが要求されたとみなしていると
いうのが現状の実装と思われます.
S2JDBC 的にはこの名無しのパラメータは $1 という
名前で扱うので,このような実装になっている必要は
ないと思うのですが,このクラスは S2JDBC 以前に
S2Dao から移植されて Kuina-Dao でも使われているので,
このまま仕様扱いですかねー.
--
<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 メーリングリストの案内