sql >> Database >  >> RDS >> PostgreSQL

Geparametriseerde IN-component die meerdere kolommen gebruikt

Het enige dat u hoeft te doen, is een lijst met arrays doorgeven, waarbij elke array een sleutel en waarde bevat, zoals deze:

HashMap<String , String > map = new HashMap<>();
map.put("key0", "value0");
map.put("key1", "value1");
Set<String> keys = map.keySet();
List<String[]> valuesMap = new ArrayList<>();
for(String key:keys){
    String[] entry = {key,map.get(key)};
    valuesMap.add(entry);
}
String sql = "select * from mytable where (key, value) in (values :valuesMap)";
SqlParameterSource params = new MapSqlParameterSource("valuesMap", valuesMap);
jdbcTemplate.query(sql, params, rowMapper);

Dit wordt vermeld in de Spring-documentatie:http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/jdbc.html#jdbc-in-clause



  1. SELECT werkt niet bij gebruik van !=in WHERE-component (met GROUP BY en HAVING COUNT)

  2. PostgreSQL-controlebeperking voor externe sleutelvoorwaarde

  3. Gebruik mysql_fetch_row om resultaten uit de database op te halen en in de array in te voegen met behulp van PHP en mysqli?

  4. Wat doet (+) in Oracle SQL?