Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JdbcTemplate IN Clause for String elements

Am using NamedParameterJdbcTemplate for where Clause elements and one of them seems to be List<String>. JdbcTemplate replaces them ?,?,?...(list size) but for a IN clause with List<String> it has to be '?','?'....

Is there a way around this?

like image 669
SriHarish Avatar asked Dec 13 '11 12:12

SriHarish


1 Answers

There a few other similar questions out there which might have helpful answers for you:

How to execute IN() SQL queries with Spring's JDBCTemplate effectivly?

To make this style of query work on my end, I have to switch from plain old JDBCTemplate to NamedParameterJdbcTemplate.

Here is some example code:

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());
like image 100
Yogesh Chawla Avatar answered Oct 14 '22 05:10

Yogesh Chawla