Solución:
Quieres una fuente de parámetro:
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());
Esto solo funciona si getJdbcTemplate()
devuelve una instancia de tipo NamedParameterJdbcTemplate
Hago la consulta “en cláusula” con spring jdbc así:
String sql = "SELECT bg.goodsid FROM beiker_goods bg WHERE bg.goodsid IN (:goodsid)";
List ids = Arrays.asList(new Integer[]{12496,12497,12498,12499});
Map<String, List> paramMap = Collections.singletonMap("goodsid", ids);
NamedParameterJdbcTemplate template =
new NamedParameterJdbcTemplate(getJdbcTemplate().getDataSource());
List<Long> list = template.queryForList(sql, paramMap, Long.class);
Si obtiene una excepción para: tipo de columna no válido
Por favor use getNamedParameterJdbcTemplate()
en lugar de getJdbcTemplate()
List<Foo> foo = getNamedParameterJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)",parameters,
getRowMapper());
Tenga en cuenta que los dos segundos argumentos se intercambian.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)