Oracle
 sql >> Datenbank >  >> RDS >> Oracle

kann keine Parameter aus der von mybatis ausgeführten Orakelprozedur empfangen

Ich habe eine Lösung gefunden. Map muss user statt zwei Parameter in der canCustomerSubscribe-Methode sein.

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

mybatis xml-Inhalt:

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

(Ich muss die Kommas zwischen den Argumentattributen hinzufügen)

Aufruf über die Methode „Subscription Service“:

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