- 存储返回结果集
public List<Map<String, Object>> getData(String In_StartDate, String In_EndDate,String In_ReportTypeNo ) throws SQLException {
return (List<Map<String, Object>>) jdbcTemplate.execute(new CallableStatementCreator() {
@Override
public CallableStatement createCallableStatement(Connection con) throws SQLException {
// 调用的sql
String callSql= "{call TIME_GetData_web(@In_StartDate=?,@In_EndDate=?,@In_ReportTypeNo=?)}";
CallableStatement cs = con.prepareCall(callSql);
// 设置输入参数的值
cs.setString(1, In_StartDate);
cs.setString(2, In_EndDate);
cs.setString(3, In_ReportTypeNo);
return cs;
}
}, new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs) throws SQLException {
List<Map<String, Object>> list = new ArrayList<>();
ResultSet rs = cs.executeQuery();
// 得到所有数据
ResultSetMetaData rmd = rs.getMetaData();
// 得到列名总数
int columnCount = rmd.getColumnCount();
System.out.println("columnCount: " + columnCount);
while (rs.next()) {
Map<String, Object> rowMap = new HashMap<>(columnCount);
for (int i = 1; i <= columnCount; i++) {
rowMap.put(rmd.getColumnName(i), rs.getObject(i));
}
list.add(rowMap);
}
rs.close();
return list;
}
});
}
- 注:由于存储过程需要传输的值较多,但是业务需求只需要部分,执行SQL时就指定了属性
String callSql= "{call TIME_GetData_web(@In_StartDate=?,@In_EndDate=?,@In_ReportTypeNo=?)}";
- 存储如图: