私はSpring 3.0.5を使用してJavaアプリケーションを開発し、mybatis-springを使用してデータベースOracleで作業します。mybatisによって実行されるoracleプロシージャからパラメータを受け取ることができません
IはMyBatisのためのインタフェースでいる:canCustomerSubscribeため
public interface SubscriberMapper {
Subscriber getSubscriberByMsisdn(String msisdn);
void insertSubscriber(Subscriber subscriber);
void updateSubscriber(Subscriber subscriber);
void canCustomerSubscribe(@Param("msisdn") String msisdn,
@Param("responseCode") Integer responseCode);
}
MyBatisのXMLコンテンツを:
<parameterMap id="canCustomerSubscribeParams" type="map">
<parameter property="msisdn" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
<parameter property="responseCode" jdbcType="NUMERIC" javaType="java.lang.Integer" mode="OUT"/>
</parameterMap>
<select id="canCustomerSubscribe" parameterMap="canCustomerSubscribeParams" statementType="CALLABLE">
CALL wallet.pkg_wallet_validation.can_customer_subscribe(#{msisdn}, #{responseCode})
</select>
および実行するコード:
public void subscribe(String msisdn) throws InvalidArgumentException {
Integer responseCode = 0;
subscriberMapper.canCustomerSubscribe(msisdn, responseCode);
System.out.println("msisdn: " + msisdn + ", responseCode: " + responseCode);
}
私 無効な "msisdn"メソッドで "subscribe"メソッドを実行すると、プロシージャから実際の値が返されません。データベースにこの手順の実行は= 1001 reponseValueを返しますが、Javaコードで私はMyBatisの出力のためにどっしりしてデバッグログをオンに0をされて受信します。
2011-10-19 10:32:46,732 DEBUG [main] (Slf4jImpl.java:28) ooo Connection Opened 2011-10-19 10:32:46,909 DEBUG [main] (Slf4jImpl.java:28) ==> Executing: CALL wallet.pkg_wallet_validation.can_customer_subscribe(?, ?) 2011-10-19 10:32:46,911 DEBUG [main] (Slf4jImpl.java:28) ==> Parameters: 509999999(String), 0(Integer) msisdn: 509999999, responseCode: 0
私は「購読する」方法はResponseCodeに変更= null、受信とエラー:
org.springframework.jdbc.UncategorizedSQLException: Error setting null parameter. Most JDBC drivers require that the JdbcType must be specified for all nullable parameters. Cause: java.sql.SQLException: Invalid column type ; uncategorized SQLException for SQL []; SQL state [null]; error code [17004]; Invalid column type; nested exception is java.sql.SQLException: Invalid column type
を私は、構文を修正XMLファイルの引数の間にカンマを追加する必要があります。 – Panciz