使用Spring jdbc模板处理List对象参数和多列条件

时间:2019-06-11 20:19:10

标签: java spring spring-boot spring-jdbc jdbctemplate

我有具有字段“ accountnumber”和“ systemcode”的交易对象列表,我正在尝试使用jdbc模板(NamedParameterJdbcTemplate)为以下示例构建查询

选择* 来自帐户 ((111,sys1),(222,sys2),.....)中的(帐号,系统代码)

我正在使用NamedParameterJdbcTemplate-我知道,如果在WHERE IN子句中有一个条件,我可以像

Set<String> listAccounts= //set with multiple values;
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("listAccounts", listAccounts);
List<Accounts> accounts= getJdbcTemplate().query("SELECT * FROM account WHERE accountnumber IN (:listAccounts)", parameters, getRowMapper());

由于这是WHERE IN子句中的多个条件-这种方法对我不起作用-请帮助

1 个答案:

答案 0 :(得分:0)

选项1:动态构建SQL "SELECT * FROM account WHERE (accountnumber,systemcode) in ((?,?),(?,?),.....)"并将所有位置值提供给JdbcTemplate.query(String sql, Object[] args, RowMapper<T> rowMapper)

选项2:使用SQL "SELECT * FROM account WHERE accountnumber = :a AND systemcode = :s"并使用批处理为每对值运行语句,然后将所有结果合并为Java代码。