Предложение JdbcTemplate IN для строковых элементов - PullRequest
6 голосов
/ 13 декабря 2011

Я использую NamedParameterJdbcTemplate для элементов Clause, и один из них выглядит как List<String>. JdbcTemplate заменяет их?,?,? ... (размер списка), но для предложения IN с List<String> это должно быть '?', '?' ....

Есть ли способ обойти это?

1 Ответ

8 голосов
/ 21 сентября 2012

Есть еще несколько похожих вопросов, на которые вам могут помочь полезные ответы:

Как эффективно выполнять запросы 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());
...