Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
CallAnalysisReportVo vo = new CallAnalysisReportVo();
try {
ResultSetMetaData rsmd;//接收元数据
conn = jdbcTemplate.getDataSource().getConnection();
//设置sql参数,date1,date2是传过来的参数,没必要是两个,也可以是其他数量
ps = conn.prepareStatement("EXEC dbo.P_mbr_get_customer_call_rpt ?,?,?");
if(date1 != null){
ps.setObject(1,new java.sql.Date(date1.getTime()));
}else{
ps.setObject(1,null);
}
if(date2 != null){
ps.setObject(2,new java.sql.Date(date2.getTime()));
}else{
ps.setObject(2,null);
}
ps.setObject(3,callType);
//获取结果集
rs = ps.executeQuery();
List<Map<String,Object>> list = New.list();//接收数据
List<String> headers = New.list();//接收表头数据
int columnCount = 0,i;
Map<String,Object> map;//用于接收单行数据
String key;//键
Object objV;//值
int index = 0;//标记遍历行索引
//设置固定表头,CCID1,CCID2这两个要分别写在字段的最前面和最后面,不然会产生意外,
String[] staticHeaders = {"CCID1","来电分组","来电类别","本年累计","时间段前累计","时间段累计","CCID2"};
while (rs.next()){
rsmd = rs.getMetaData();
if(columnCount == 0){
columnCount = rsmd.getColumnCount();
}
map = New.lMap();//分配空间
index++;
for (i = 1;i <= columnCount;i++){//按列数遍历
if(i <= staticHeaders.length){
key = staticHeaders[i-1];
}else{
key = rsmd.getColumnName(i);//key
}
if(index == 1){//第一次,添加表头属性
headers.add(key);
}
objV = JdbcUtils.getResultSetValue(rs,i);
map.put(key,objV);
}
list.add(map);//添加一行
}
vo.setDatas(list);//将数据添加至报表对象
vo.setHeaders(headers);//将表头添加至报表对象
return vo;
}catch (SQLException e){
throw new RabbitJdbcException(String.format("JdbcTemplate.doGetCallAnalysisReport执行查询时出现异常:s%.",e.getMessage()));
}finally {
JdbcUtils.free(conn,ps,rs);
}
此代码请不要盗用和用于商业用途及违法行为,一经发现将严肃处理!!!!!!!!!!!!