我需要你帮我准备好那份声明。我想在转换映射有像以前的2个映射的总和的值。请帮帮我
statement = connection.prepareStatement("select count(*) as count,b.bankid,status from................... between ? and ? group by status,bankid order by bankid");
statement.setInt(1, PaymentType.CONVERSION);
statement.setTimestamp(2, dateFrom);
statement.setTimestamp(3, dateTo);
rs = statement.executeQuery();
while (rs.next()) {
int status = rs.getInt("status");
String bankid =rs.getString("bankid");
if (status == 1) {
suc.put(bankid, rs.getInt("count"));
}else {
fail.put(bankid, rs.getInt("count"));
}
conv.put(bankid, success.get("count") + failed.get("count"));发布于 2015-07-31 04:21:24
您为success和failed映射使用了错误的密钥。
success.get("count") + failed.get("count")
应该是
success.get(bankid) + failed.get(bankid)
您还应该防止success或failed映射从get返回null,以防在计算表达式时这些映射没有bankid条目。
例如:
public Integer safeGet(Map<String, Integer> map, String key) {
if (map == null || key == null || !map.containsKey(key)) {
return Integer.valueOf(0);
}
return map.get(key);
}然后使用:
conversion.put(bankid, safeGet(success, bankid) + safeGet(failed, bankid));https://stackoverflow.com/questions/31732675
复制相似问题