java - namedparameterjdbctemplate - spring mvc jdbc example
Cómo usar una lista de cadenas en NamedParameterJDBCTemplate para obtener resultados (2)
También puede utilizar 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);
Experimentando con Spring-JDBC. Estoy usando this como referencia. Estoy tratando de obtener una lista de actores que tienen el mismo apellido. Ejecutar este código me dio los resultados deseados:
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);
}
Tengo una List<String>
de apellidos. ¿Cómo puedo obtener una lista de actores con la lista que tengo? ¿Debo recorrer la lista de apellidos y llamar a getActorsWithSameLastName()
cada vez que Spring proporciona una forma en la que hace la iteración y obtiene el resultado para mí? Por favor aconséjame.
Utilice la cláusula IN ..
¿Cómo usar la cláusula SELECT IN en 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());