template namedparameterjdbctemplate mvc journaldev example ejemplo java spring spring-jdbc

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());