Oracle
 sql >> Database >  >> RDS >> Oracle

non può ricevere il parametro dalla procedura Oracle eseguita da mybatis

Ho trovato la soluzione. La mappa deve essere utente anziché due parametri nel metodo canCustomerSubscribe.

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

contenuto xml mybatis:

<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>

(Ho bisogno di aggiungere le virgole tra gli attributi degli argomenti)

chiamandolo dal metodo di abbonamento:

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"));
}