sql >> Base de Datos >  >> RDS >> Oracle

no se puede recibir el parámetro del procedimiento de Oracle ejecutado por mybatis

Encontré solución. El mapa debe ser usuario en lugar de dos parámetros en el método canCustomerSubscribe.

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

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

(Necesito agregar las comas entre los atributos de los argumentos)

llamándolo desde el método de servicio de suscripción:

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