2016-09-29 3 views
0

Я использую spring jdbc. Я хочу, чтобы результирующий набор с параметром. отдельно я сделал, но вместе я не могу это сделать.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); 
} 

execute() дает два параметра по умолчанию т.е. 1) # множества результатов 1 2) # обновление-кол-1

#result-set-1 результирующий набор т.е. select record и #update-count-1 возвращает количество обновлений. Если мы хотим получить результат с оператором select с параметром out. мы просто должны объявить параметр out. execute() дает все в категории 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) ; 

}

Таким образом, я нашел решение после прочтения многих вещей. Если у кого-то есть другой вариант для этого решения, пожалуйста, поделитесь со мной.