分享

Spring如何使用JdbcTemplate调用存储过程的三种情况

 dawn001 2014-10-20
public void test() {  
  List resultList = (List) jdbcTemplate.execute(  
     new CallableStatementCreator() {  
        public CallableStatement createCallableStatement(Connection con) throws SQLException {  
           String storedProc = "{call sp_list_table(?,?)}";// 调用的sql  
           CallableStatement cs = con.prepareCall(storedProc);  
           cs.setString(1, "p1");// 设置输入参数的值  
           cs.registerOutParameter(2, OracleTypes.CURSOR);// 注册输出参数的类型  
           return cs;  
        }  
     }, new CallableStatementCallback() {  
        public Object doInCallableStatement(CallableStatement cs) throws SQLException,DataAccessException {  
           List resultsMap = new ArrayList();  
           cs.execute();  
           ResultSet rs = (ResultSet) cs.getObject(2);// 获取游标一行的值  
           while (rs.next()) {// 转换每行的返回值到Map中  
              Map rowMap = new HashMap();  
              rowMap.put("id", rs.getString("id"));  
              rowMap.put("name", rs.getString("name"));  
              resultsMap.add(rowMap);  
           }  
           rs.close();  
           return resultsMap;  
        }  
  });  
  for (int i = 0; i < resultList.size(); i++) {  
     Map rowMap = (Map) resultList.get(i);  
     String id = rowMap.get("id").toString();  
     String name = rowMap.get("name").toString();  
     System.out.println("id=" + id + ";name=" + name);  
  }  
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约