Requêtes SQL IN() efficaces avec le modèle JDBC de Spring
Vous disposez d'une requête IN() qui vous demande actuellement de créer une clause avec plusieurs lignes du code :
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()); }
Vous recherchez une manière plus élégante qui ressemble au paramètre des instructions préparées substitution.
Utilisation d'une source de paramètres
Pour obtenir l'élégance souhaitée, vous pouvez utiliser une source de paramètres :
Set<Integer> ids = ...; MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("ids", ids); List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)", parameters, getRowMapper());
NamedParameterJdbcTemplate
Notez que cela ne fonctionne que si getJdbcTemplate() renvoie une instance de tapez NamedParameterJdbcTemplate.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!