Eu queria saber se existe uma maneira mais elegante de fazer consultas IN () com o JDBCTemplate do Spring. Atualmente eu faço algo assim:
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());
}
O que é bastante doloroso, pois se eu tiver nove linhas apenas para criar a cláusula para a consulta IN (). Eu gostaria de ter algo como a substituição de parâmetro de instruções preparadas
WHERE NOT EXISTS (SELECT ...)
.Eu faço a consulta "na cláusula" com o jdbc do spring assim:
fonte
Se você receber uma exceção para: Tipo de coluna inválido
Por favor use em
getNamedParameterJdbcTemplate()
vez degetJdbcTemplate()
Observe que os dois segundos argumentos são trocados.
fonte
Consulte aqui
escrever consulta com parâmetro nomeado, use simple
ListPreparedStatementSetter
com todos os parâmetros em sequência. Basta adicionar o snippet abaixo para converter a consulta no formato tradicional com base nos parâmetros disponíveis,fonte
Muitas coisas mudaram desde 2009, mas só consigo encontrar respostas dizendo que você precisa usar o NamedParametersJDBCTemplate.
Para mim, funciona se eu apenas fizer uma
usando SimpleJDBCTemplate ou JDBCTemplate
fonte
listeParamsForInClause
não será escapado e o tornará vulnerável à injeção de SQL.