Oracle
 sql >> Base de données >  >> RDS >> Oracle

impossible de recevoir le paramètre de la procédure oracle exécutée par mybatis

J'ai trouvé la solution. La carte doit être un utilisateur au lieu de deux paramètres dans la méthode canCustomerSubscribe.

 void canCustomerSubscribe(Map<String,Object> params);

Contenu mybatis xml :

<select id="canCustomerSubscribe" parameterType="java.util.HashMap" statementType="CALLABLE">
    CALL wallet.pkg_wallet_validation.can_customer_subscribe(
    #{msisdn, jdbcType=VARCHAR, javaType=java.lang.String, mode=IN},
    #{responseCode,jdbcType=NUMERIC, javaType=java.lang.Integer, mode=OUT})
</select>

(Je dois ajouter les virgules entre les attributs des arguments)

en l'appelant à partir de la méthode de service d'abonnement :

public void subscribe(String msisdn) throws InvalidArgumentException {
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("msisdn", msisdn);
    params.put("responseCode", null);
    subscriberMapper.canCustomerSubscribe(params);
    System.out.println(params.get("responseCode"));
}