5
我正在嘗試設計一個小的CRUD工具,並且到目前爲止,每個方面(Rich Faces UI和託管豆, 驗證,mySQL數據庫等)都將很好,但不是myBatis的一塊。MyBatis映射器調用多個IN參數的PROC
我是比較新的MyBatis的和我保持用戶指南和API近在咫尺,但 仍然有一些事情,就不會爲我走到一起,一個是一個過程 涉及任何呼叫多個IN參數。這裏有一個例子:
這從數據庫建立腳本:
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
這從MyMapper.java:
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
我會注意到,我也嘗試:
- 創建與變量瓦拉和值Valb併爲每個 getter/setter方法一個POJO,
- 製作
parameterType="PojoClass"
在XML中, - 跳過
session.getMapper()
並創建一個PojoClass的實例, - 並調用
session.selectList("getProgress", pojoInstance);
與幾乎相同的結果(即錯誤的參數數量)。
對網絡搜索的幫助很少,大部分告訴我要做我認爲我已經完成的工作。
像這樣的簡單錯誤是最令人沮喪的。謝謝你,聖誕快樂! – cobaltduck 2011-12-24 21:51:30