2016-09-29 102 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); 
} 

​​給出了兩個參數默認 即 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) ; 

}

這樣,我找到解決辦法讀很多東西之後。如果任何人有這個解決方案的其他選擇,那麼請與我分享。