Лучший способ обработать ситуации «IN» для шаблона JDBC (в Java или Spring) - это использовать NamedParameterJdbcTemplate
из Spring. Если вы используете свойства среды для подключения источника данных, один из них уже должен быть доступен в качестве bean-компонента для автоматического подключения. Если нет, вы можете создать его, просто передав JdbcTemplate
, который у вас есть.
val days = arrayOf("TUESDAY", "WEDNESDAY")
val namedParamJdbcTemplate = NamedParameterJdbcTemplate(jdbcTemplate) // or autowired in
// make sure this is not an empty collection! In your example it obviously is not empty.
// but if it is being passed in and could be empty, make sure to not query with it,
// otherwise the JdbcTemplate will make a where clause of days NOT IN (), which will fail on execution
val paramMap: Map<String, Any?> = mapOf("days" to days)
namedParamJdbcTemplate.query("select * from days where days not in (:days), paramMap, mapper)