Me preguntaba si hay una forma más elegante de hacer consultas IN () con JDBCTemplate de Spring. Actualmente hago algo así:
StringBuilder jobTypeInClauseBuilder = new StringBuilder();
for(int i = 0; i < jobTypes.length; i++) {
Type jobType = jobTypes[i];
if(i != 0) {
jobTypeInClauseBuilder.append(',');
}
jobTypeInClauseBuilder.append(jobType.convert());
}
Lo cual es bastante doloroso ya que si tengo nueve líneas solo para construir la cláusula para la consulta IN (). Me gustaría tener algo como la sustitución de parámetros de declaraciones preparadas
WHERE NOT EXISTS (SELECT ...)
.Hago la consulta "en cláusula" con spring jdbc así:
fuente
Si obtiene una excepción para: Tipo de columna no válido
Por favor, use en
getNamedParameterJdbcTemplate()
lugar degetJdbcTemplate()
Tenga en cuenta que los dos segundos argumentos se intercambian.
fuente
Consulte aquí
consulta de escritura con parámetro con nombre, uso simple
ListPreparedStatementSetter
con todos los parámetros en secuencia. Simplemente agregue el fragmento a continuación para convertir la consulta en forma tradicional según los parámetros disponibles,fuente
Muchas cosas cambiaron desde 2009, pero solo puedo encontrar respuestas que dicen que necesita usar NamedParametersJDBCTemplate.
Para mí funciona si solo hago un
usando SimpleJDBCTemplate o JDBCTemplate
fuente
listeParamsForInClause
no se escapará y lo hace vulnerable a la inyección de SQL.