2016-09-29 21 views
0

私はspring jdbcを使用しています。私は結果をparamで設定したい。別に私はやったが一緒に私はできない。SimpleJDBCCallは結果セットを持つパラメータを処理します

CREATE DEFINER=`xxx`@`%` PROCEDURE `client_xxxx`(
    IN p_xxxx TINYINT(1) UNSIGNED, 
    IN p_result SMALLINT(2) UNSIGNED, 
    OUT p_result BIT) BEGIN 
     IF EXISTS(SELECT 1 FROM xxx WHERE xxx = 1 AND xxx = 1) THEN 
      SELECT ...; 
      SET p_result = 0; 
     ELSE 
     SELECT ...; 
     SET p_result = 1; 
     END IF; 
    END 

春のJDBCコード

SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource).withProcedureName(sp); 
List<Map<String, Object>> list = (List<Map<String, Object>>) jdbcCall.execute(paramsArray).get("#result-set-1"); 

list結果、私はそれでp_resultを得ることができますどのように設定して結果セットを取得します。

答えて

0

私はそれが簡単に見つけられません。

public Map<String, Object> xxx(String sp, Object... paramsArray) { 
    SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource).withProcedureName(sp); 
    return jdbcCall.execute(paramsArray); 
} 

​​は、2つのパラメータのデフォルト を与える即ち 1)#結果は、セット1 2)#更新カウント-1

#result-set-1結果、すなわちselect record#update-count-1戻る更新回数を設定します。我々はoutパラメータでselectステートメントで結果にアクセスしたい場合。我々はoutパラメータを宣言しなければなりません。​​はMap<String, Object>タイプのすべてのものを返します。 マップから、stored procedureが返す複数の値をすべて取得できます。例えば

SP

よう
PROCEDURE xxx(
    IN xxxxTINYINT(1) UNSIGNED, 
    IN xxxSMALLINT(2) UNSIGNED, 
    OUT p_isconfig BIT 
) 
BEGIN 
    SELECT.... 
    SET p_isconfig = 1; 
END 

ので#result-set-1に私が選択した結果を取得します。 とp_isconfigが私に結果を与えます。混乱がある場合は、マップを反復し、戻り値のパラメータを取得する方法を識別できます。

Iterator i = map.keySet().iterator(); 
while (i.hasNext()) { 
    String key = (String) i.next(); 
    String value = params.get(key); 

    System.out.println("key: " + key + " --- value: " + value) ; 

}

私は多くのことを読んだ後、解決策を見つけたこの方法です。いずれかの人にこのソリューションのための他のオプションがある場合は、私と共有してください。

関連する問題