MyBatis-mapper-Aufruf einer Prozedur mit mehreren Parametern
Ich versuche zu entwerfen, eine kleine CRUD-tool, und bisher, jede Facette (die Rich Faces UI-und Managed Beans,
überprüfung der mySQL-Datenbank, etc.) geht in Ordnung, aber nicht die myBatis Stück.
Ich bin relativ neu in myBatis und führe das Benutzer-Handbuch und API-nah bei der hand, aber es
sind noch einige Dinge, die einfach nicht kommen bei mir zusammen, und ist jeder Aufruf einer Prozedur
mit mehreren Parametern. Hier ist ein Beispiel:
Diese aus dem DB-set-up-Skripte:
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
Diese aus MyMapper.java:
public interface MyMapper {
List<MyFooClass> getProgress (
@Param("valA") String valueA, @Param("valB") String valueB);
}
Diese aus 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>
Schließlich aus meiner DAO-Klasse:
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;
}
Das Ergebnis:
### 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
Werde ich bemerken, dass ich auch versucht:
- erstellen eines POJO mit Variablen valA und valB und Getter/setter für
jeder, - machen
parameterType="PojoClass"
im XML -, - überspringen der
session.getMapper()
und der Erstellung einer Instanz von PojoClass, - und ruft
session.selectList("getProgress", pojoInstance);
mit dem fast identischen Ergebnis (D. H. falsche Anzahl von Argumenten).
Sehr wenig Hilfe auf net-Suche, die meisten sagen mir, das zu tun, was ich denke, habe ich bereits getan.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Ihnen fehlt ein Komma in der Prozedur-Aufruf.