5
私は小さなCRUDツールを設計しようとしており、これまでのところすべての面(Rich Faces UIとManaged Beans、 検証、mySQLデータベースなど)は進んでいますしかし、myBatisの作品ではありません。複数のINパラメータを持つPROCを呼び出すMyBatisマッパー
私はMyBatisのは比較的新しいだと手元のユーザーガイドやAPIの近くに保管しておりますが、そこ はまだ私だけのために一緒に来ることはありませんいくつかのものであり、1が関与する手続き への呼び出しです複数のINパラメータ。ここでは一例です:DBから
これは、スクリプトを設定:MyMapper.javaから
create procedure MY_FOO_PROC (IN valA VARCHAR(15), IN valB CHAR(1))
begin
select blah from blah where blah = valA and blah = valB etc.;
end
この:
public interface MyMapper {
List<MyFooClass> getProgress (
@Param("valA") String valueA, @Param("valB") String valueB);
}
このMyMapper.xmlから:
<select id="getProgress" parameterType="map"
resultMap="MyFooMap" statementType="CALLABLE">
{ call MY_FOO_PROC (
#{valA, mode=IN, jdbcType=VARCHAR}
#{valB, mode=IN, jdbcType=CHAR}
)}
</select>
そして最後に私のDAOクラスから:
public static List<MyFooClass>
doGetProgress (String valueA, String valueB) {
SqlSession session = MyBatisConnectionFactory.getInstance().getSqlSessionFactory().openSession();
EsparMapper mapper = session.getMapper(MyMapper.class);
List<MyFooClass> listFoo = mapper.getProgress(valueA, valueB); // line which originates exception below
session.close();
return listFoo;
}
結果:
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Incorrect number of arguments for PROCEDURE dbname.MY_FOO_PROC; expected 2, got 1
### The error may involve my.package.names.getProgress-Inline
### The error occurred while setting parameters
私は私も試してみましたことに注意します:
- を それぞれの変数のValaとvalBとゲッター/セッターとPOJOを作成し、
- づくりXMLの
parameterType="PojoClass"
session.getMapper()
をスキップし、PojoClassのインスタンスを作成すると、- とほぼ同じ結果と
session.selectList("getProgress", pojoInstance);
を呼び出す(すなわち引数の数が間違っている)。
ほとんどのネット検索では、ほとんど私が私がすでに行ったと思うことをするように指示しています。
このような単純な間違いが最も不快です。ありがとう、メリークリスマス! – cobaltduck