I want to pass list values in IN clause using jdbcTemplate in mysql query. Like below,
List<Long> listId= new ArrayList<>();
listId.add(1234L);
listId.add(1235L);
listId.add(1236L);
String type ="A";
List<BojoClass> result = new ArrayList<>();
String sql="select column1,column2 from table where columName in(?)"
result = jdbcTemplate.query(sql, new Object[]{listId}, new BeanPropertyRowMapper<BojoClass>(BojoClass.class));
How to achieve this in best way?
add(1236L); String type ="A"; List<BojoClass> result = new ArrayList<>(); String sql="select column1,column2 from table where columName in(?)" result = jdbcTemplate. query(sql, new Object[]{listId}, new BeanPropertyRowMapper<BojoClass>(BojoClass. class));
All you have to do is build the comma separated list of items and insert it in the string.
Usage. Step 1 − Create a JdbcTemplate object using a configured datasource. Step 2 − Create a StudentMapper object implementing RowMapper interface. Step 3 − Use JdbcTemplate object methods to make database operations while using StudentMapper object.
NamedParameterJdbcTemplate
may help for you.
For your sample, try this please:)
NamedParameterJdbcTemplate jdbcTemplate = ...
List<Long> listId= new ArrayList<>();
listId.add(1234L);
listId.add(1235L);
listId.add(1236L);
String sql="select column1,column2 from table where columName in(:ids)";
List<BojoClass> result = new ArrayList<>();
Map idsMap = Collections.singletonMap("ids", listId);
result = jdbcTemplate.query(sql, idsMap, ParameterizedBeanPropertyRowMapper.newInstance(BojoClass.class));
Edited:
If you can get DataSource
, you can just init a NamedParameterJdbcTemplate
object by its constructor like:
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
You can join your list with StringUtils.join(paramListForInClause, ",");
to generate the string you need
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