Spring如何使用JdbcTemplate调用sql server存储过程 返回list
public static List execteProcList(final String dbKey,final String procedure,final String [] param){
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
List resultList=(List)jdbcTemplate.execute(
new CallableStatementCreator() {
@Override
public CallableStatement createCallableStatement(Connection con)
throws SQLException {
String strProc="{ call "+procedure+" (";
for (int i = 0; i < param.length; i++) {
if(i!=param.length-1){
strProc+="?,";
}else {
strProc+="?";
}
}
strProc+=")}";
CallableStatement cs=con.prepareCall(strProc);
for (int i = 1; i <=param.length; i++) {
cs.setString(i, param[i-1]);
}
return cs;
}
}
, new CallableStatementCallback() {
@Override
public Object doInCallableStatement(CallableStatement cs)
throws SQLException, DataAccessException {
ResultSet rs=cs.executeQuery();
ResultSetMetaData rmd=rs.getMetaData();
int columnCount=rmd.getColumnCount();
List<Map<String,Object>> resultsMap=new ArrayList<Map<String,Object>>();
while(rs.next()){
Map<String,Object> mso=new HashMap<String,Object>(columnCount);
for(int i=1;i<=columnCount;i++){
mso.put(rmd.getColumnName(i), rs.getObject(i));
//mso.put(s, rs.getString(s));
}
resultsMap.add(mso);
}
rs.close();
return resultsMap;
}
});
return resultList;
}

浙公网安备 33010602011771号