MySQL数据库有10441条记录,用Java将结果生成JSON格式返回给客户端,采用String和StringBuffer产生的效果有天渊之别,实现方式如下:
一、采用String方式
public String getPreacceptByString() throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date d1 = new Date();
System.out.println(sdf.format(d1));
String acceptList = "{acceptList:[";
DBConnector dbc = new DBConnector();
Connection conn = dbc.createConn();
String sql = "select yslh, psbm, xmnr, ssje, zy, fl, ssdw, ssr, lxdh, xmlxwh, jszlrq, ystgrq, ysjsr, tcysjsr, bz from preaccept order by yslh desc " ;
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
acceptList = acceptList + "{yslh: '" + rs.getString("yslh") + "' ";
acceptList = acceptList + ", psbm: '" + rs.getString("psbm") + "' ";
acceptList = acceptList + ", xmnr: '" + rs.getString("xmnr") + "' ";
acceptList = acceptList + ", ssje: " + rs.getDouble("ssje") + " ";
acceptList = acceptList + ", zy: '" + rs.getString("zy") + "' ";
acceptList = acceptList + ", fl: '" + rs.getString("fl") + "' ";
acceptList = acceptList + ", ssdw: '" + rs.getString("ssdw") + "' ";
acceptList = acceptList + ", ssr: '" + rs.getString("ssr") + "' ";
acceptList = acceptList + ", lxdh: '" + rs.getString("lxdh") + "' ";
acceptList = acceptList + ", xmlxwh: '" + rs.getString("xmlxwh") + "' ";
acceptList = acceptList + ", jszlrq: '" + rs.getString("jszlrq") + "' ";
acceptList = acceptList + ", ystgrq: '" + rs.getString("ystgrq") + "' ";
acceptList = acceptList + ", ysjsr: '" + rs.getString("ysjsr") + "' ";
acceptList = acceptList + ", tcysjsr: '" + rs.getString("tcysjsr") + "' ";
acceptList = acceptList + ", bz: '" + rs.getString("bz") + "'},";
}
rs.close();
sql = "select count(*) as total from preaccept ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
int total = 0;
while(rs.next()){
total = rs.getInt("total");
}
if(acceptList.equals("{acceptList:[")){
acceptList = "{acceptList:[]}";
}else{
acceptList = acceptList.substring(0 ,acceptList.length()-1) + "],total:" + total +"}";
}
rs.close();
pstmt.close();
conn.close();
dbc.disConnect();
Date d2 = new Date();
long diff = d2.getTime() - d1.getTime();
diff = diff /(1000);
System.out.println(sdf.format(d1)+"-"+sdf.format(d2));
System.out.println(diff);
return acceptList;
}
运行时间用了4分29秒
二、采用StringBuffer方式
public String getPreacceptByBuffer() throws Exception{
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date d1 = new Date();
System.out.println(sdf.format(d1));
StringBuffer acceptList = new StringBuffer();
acceptList.append("{acceptList:[");
DBConnector dbc = new DBConnector();
Connection conn = dbc.createConn();
String sql = "select yslh, psbm, xmnr, ssje, zy, fl, ssdw, ssr, lxdh, xmlxwh, jszlrq, ystgrq, ysjsr, tcysjsr, bz from preaccept order by yslh desc " ;
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
acceptList.append("{yslh: '").append(rs.getString("yslh")).append("' ");
acceptList.append(", psbm: '").append(rs.getString("psbm")).append("' ");
acceptList.append(", xmnr: '").append(rs.getString("xmnr")).append("' ");
acceptList.append(", ssje: ").append(rs.getDouble("ssje")).append(" ");
acceptList.append(", zy: '").append(rs.getString("zy")).append("' ");
acceptList.append(", fl: '").append(rs.getString("fl")).append("' ");
acceptList.append(", ssdw: '").append(rs.getString("ssdw")).append("' ");
acceptList.append(", ssr: '").append(rs.getString("ssr")).append("' ");
acceptList.append(", lxdh: '").append(rs.getString("lxdh")).append("' ");
acceptList.append(", xmlxwh: '").append(rs.getString("xmlxwh")).append("' ");
acceptList.append(", jszlrq: '").append(rs.getString("jszlrq")).append("' ");
acceptList.append(", ystgrq: '").append(rs.getString("ystgrq")).append("' ");
acceptList.append(", ysjsr: '").append(rs.getString("ysjsr")).append("' ");
acceptList.append(", tcysjsr: '").append(rs.getString("tcysjsr")).append("' ");
acceptList.append(", bz: '").append(rs.getString("bz")).append("'},");
}
rs.close();
sql = "select count(*) as total from preaccept ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
int total = 0;
while(rs.next()){
total = rs.getInt("total");
}
String acceptList1 ="";
if(acceptList.equals("{acceptList:[")){
acceptList = new StringBuffer("{acceptList:[]}");
acceptList1 = acceptList.toString();
}else{
acceptList1 = acceptList.substring(0 ,acceptList.length()-1) + "],total:" + total +"}";
}
rs.close();
pstmt.close();
conn.close();
dbc.disConnect();
Date d2 = new Date();
long diff = d2.getTime() - d1.getTime();
diff = diff /(1000);
System.out.println(sdf.format(d1)+"-"+sdf.format(d2));
System.out.println(diff);
return acceptList1;
}
运行时间用了 710 毫秒。