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