Expérimentation avec Spring-JDBC. J'utilise this comme référence. J'essaie d'obtenir une liste d'acteurs qui portent le même nom de famille. L'exécution de ce code m'a donné les résultats souhaités:
public List<String> getActorsWithSameLastName(String lastName,
NamedParameterJdbcTemplate template) {
String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME=:LASTNAME";
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("LASTNAME", lastName);
return template.queryForList(query, paramMap, String.class);
}
J'ai un List<String>
De noms de famille. Comment puis-je obtenir une liste d'acteurs avec la liste que j'ai? Dois-je parcourir la liste des noms de famille et appeler la getActorsWithSameLastName()
à chaque fois ou le printemps fournit-il un moyen de faire l'itération et de récupérer le résultat pour moi? Veuillez conseiller.
Utilisez la clause IN.
Comment utiliser la clause SELECT IN dans JDBCTemplates?
List<String> lastnames= new ArrayList<>();
Map namedParameters = Collections.singletonMap("lastnamevalues", lastnames);
StringBuffer recordQueryString = new StringBuffer();
recordQueryString.append("select FIRSTNAME, LASTNAME from ACTORS where lastname in (:lastnamevalues)");
List nameInvolvements = this.namedparameterJdbcTemplate.query(recordQueryString.toString(), namedParameters, new MyMapper());
Vous pouvez également utiliser MapSqlParameterSource
String query = "SELECT FIRSTNAME FROM ACTORS WHERE LASTNAME in (:LASTNAME)";
Set<String> ids = ....;
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("LASTNAME", ids);
this.namedparameterJdbcTemplate.query(query.toString(), parameters);