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

}

这样,我找到解决办法读很多东西之后。如果任何人有这个解决方案的其他选择,那么请与我分享。