MyBatis mappeur pour appeler un PROC avec de multiples paramètres
Je suis en train de créer une petite CRUD outil, et jusqu'à présent, toutes les facettes (les Riches Visages de l'INTERFACE utilisateur et Géré des Haricots,
la validation, la base de données mySQL, etc.) va bien, mais pas le myBatis pièce.
Je suis relativement nouveau à myBatis et je suis en gardant le guide de l'utilisateur et de l'API à portée de la main, mais il y
reste encore des choses qui juste ne viennent pas ensemble pour moi, et on est tout appel à une procédure
impliquant de multiples paramètres. Voici un exemple:
Ce à partir de la DB configurer des scripts:
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
Ce à partir de MyMapper.java:
public interface MyMapper {
List<MyFooClass> getProgress (
@Param("valA") String valueA, @Param("valB") String valueB);
}
Ce à partir de 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>
Et enfin ce de ma classe 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;
}
Le résultat:
### 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
Je note que j'ai aussi essayé:
- la création d'un POJO avec des variables valA et valB et des getters/setters pour
chaque, - faire
parameterType="PojoClass"
dans le XML, - sauter le
session.getMapper()
et la création d'une instance de PojoClass, - et de l'appel de
session.selectList("getProgress", pojoInstance);
avec près de résultat identique (c'est à dire un mauvais nombre d'arguments).
Très peu d'aide sur le filet de recherche, en plus de me dire de faire ce que je pense je l'ai déjà fait.
OriginalL'auteur cobaltduck | 2011-12-24
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes en manque une virgule dans l'appel de procédure.
OriginalL'auteur pablochan