我正在对Oracle数据库SELECT T109.DISTRITO FROM T109 T109
进行此查询,其中DISTRITO列有很多数字。我想将所有这些数字都放在端点中,以便在使用它们时以Hashmap或Hasmap等格式显示此信息,但始终以Hashmap的形式显示。我该怎么做?请忽略西班牙语单词,我知道我们必须始终用英语编写代码,但这是继承的代码。这是我尝试过的。
代码
private final String CONSULTA_SOLO_DISTRITOS =
" SELECT T109.DISTRITO \n"
+ " FROM T109 T109 \n";
public HashMap<String, String> getOnlyDistritoTarificacion(String numero) {
List<Map<String, Object>> filas_distritos = null;
HashMap<String, String> distrito = new HashMap();
filas_distritos = jdbcTemplate.queryForList(CONSULTA_SOLO_DISTRITOS, new Object[]{numero, numero});
if ((filas_distritos != null) && (!filas_distritos.isEmpty()) || (filas_distritos.size() != 0)) {
Map<String, Object> row = filas_distritos.get(0);
distrito.put("distrito", (String) row.get("DISTRITO"));
distrito.put("mensaje", "El número consultado (" + numero + ") ya pertenece a un Distrito de Tarificación.");
} else {
distrito.put("mensaje", "El número consultado (" + numero + ") no pertenece a un Distrito de Tarificación.");
}
return distrito;
}
答案 0 :(得分:1)
我不确定我是否正确,所以请原谅我,如果这是错误的,我会尽力提供帮助。
我认为您代码的问题在于,您继续设置相同的Map键 distrito ,每个数字都来自查询ResultSet。
相反,您应该将值收集在List对象中,并在分配给对象时,将值设置为Map。
public HashMap<String, String> getOnlyDistritoTarificacion(String numero) {
List<String> distritos = new ArrayList();
HashMap<String, String> distrito = new HashMap();
List<Map<String, Object>> filas_distritos = jdbcTemplate.queryForList(CONSULTA_SOLO_DISTRITOS, new Object[]{numero, numero});
if ((filas_distritos != null) && (!filas_distritos.isEmpty()) || (filas_distritos.size() != 0)) {
Map<String, Object> row = filas_distritos.get(0);
distritos.add((String) row.get("DISTRITO"));
distritos.put("distrito", (String) row.get("DISTRITO"));
}
distrito.put("distrito",
distritos.stream()
.collect(Collectors.joining(","));
return distrito;
}
因此,您看到的只是在收集所有值一次后将它们相加。 我使用了“,” 进行连接,但是您可以使用所需的其他字符或字符串。
此外,您无需在每次迭代中添加“ mensaje” 的值,只需检查您需要设置的值即可:
boolean numberConsulted = true;
if ((filas_distritos != null) && (!filas_distritos.isEmpty()) || (filas_distritos.size() != 0)) {
// .... code ...
} else {
numberConsulted = false;
}
if (numberConsulted) {
distrito.put("mensaje", "El número consultado (" + numero + ") ya pertenece a un Distrito de Tarificación.");
} else {
distrito.put("mensaje", "El número consultado (" + numero + ") no pertenece a un Distrito de Tarificación.");
}
我不懂西班牙语,因此对变量名感到抱歉,无论如何,我希望含义已经清除。
在您之前的代码中,您可能得到错误的结果。