当前位置: 动力学知识库 > 问答 > 编程问答 >

mysql - how to pass list parameter in IN clause using jdbcTemplate

问题描述:

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?

网友答案:

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

分享给朋友:
您可能感兴趣的文章:
随机阅读: