Puis-je utiliser queryForMap
s'il y a plusieurs lignes renvoyées par la requête.
Pour une seule ligne, le code ci-dessous fonctionne correctement.
public Map<String, Object> retrieveMultipleRowsColumns(String deptName){
return jdbcTemplate.queryForMap("SELECT DEPT_ID,DEPT_NAME FROM DEPT WHERE DEPT_NAME = ?", deptName);
}
Comment modifier cela pour plusieurs lignes?
Utilisez queryForList
voir le javadoc pour plus de détails . Il renvoie List<Map<String,Object>>
public List<Map<String, Object>> retrieveMultipleRowsColumns(String deptName){
return jdbcTemplate.queryForList("SELECT DEPT_ID,DEPT_NAME FROM DEPT WHERE DEPT_NAME = ?", deptName);
}
Je sais que c'est vraiment ancien, mais il existe un moyen beaucoup plus simple de le faire si vous recherchez une carte.
Implémentez simplement l'interface ResultSetExtractor pour définir le type que vous souhaitez renvoyer. Vous trouverez ci-dessous un exemple d'utilisation. Vous allez le cartographier manuellement, mais pour une carte simple, cela devrait être simple.
jdbcTemplate.query("select string1,string2 from table where x=1", new ResultSetExtractor<Map>(){
@Override
public Map extractData(ResultSet rs) throws SQLException,DataAccessException {
HashMap<String,String> mapRet= new HashMap<String,String>();
while(rs.next()){
mapRet.put(rs.getString("string1"),rs.getString("string2"));
}
return mapRet;
}
});
Cela vous donnera un type de retour de carte qui a plusieurs lignes (quelle que soit la quantité retournée par votre requête) et non une liste de cartes. Vous pouvez afficher les documents ResultSetExtractor ici: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/ResultSetExtractor.html