Is it possible to generate arbitrary "in ()" lists in a SQL query through Jdbc template:
example:
"select * from t where c in (#)" , However '#' could be an arbitrary list of values only known at runtime.
Yes, it's possible in Spring if you use NamedParameterJdbcTemplate
or SimpleJdbcTemplate
with named parameters. List parameter can be set as a java.util.List
:
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
List<SomeObject> result = simpleJdbcTemplate.query("SELECT * FROM t WHERE c in (:list)",
new RowMapper<SomeObject>() { ... },
Collections.singletonMap("list", list));
In this case Spring internally creates the SQL query with the required number of placeholders based on the size of the actual list when replacing named parameters with ?
s.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With