Я использую NamedParameterJdbcTemplate для элементов Clause, и один из них выглядит как List<String>. JdbcTemplate заменяет их?,?,? ... (размер списка), но для предложения IN с List<String> это должно быть '?', '?' ....
NamedParameterJdbcTemplate
List<String>
JdbcTemplate
Есть ли способ обойти это?
Есть еще несколько похожих вопросов, на которые вам могут помочь полезные ответы:
Как эффективно выполнять запросы IN () SQL с помощью Spring JDBCTemplate?
Чтобы этот стиль запросов работал с моей стороны, мне нужно переключиться с простого старого JDBCTemplate на NamedParameterJdbcTemplate.
Вот пример кода:
String query = "select * from table where columnName in (:listOfValues)"; List<String> nameRecordIDs = new ArrayList<String>(); // ... // add values to collection, then // ... Map namedParameters = Collections.singletonMap("listOfValues", nameRecordIDs); namedparameterJdbcTemplate.query(query, namedParameters,new MyMapper());