我有具有字段“ 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子句中的多个条件-这种方法对我不起作用-请帮助
答案 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代码。