【发布时间】:2013-12-04 21:16:13
【问题描述】:
我编写了一个方法来检索带有 NamedParameterJdbcTemplate 的条目列表:
public final Map<K,V> findAll(final Collection<K> keys) {
if (keys == null) {
return null;
}
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", keys);
List<V> values = new NamedParameterJdbcTemplate(datasource).query("select * from TABLE where id in ( :ids )", parameters, mapper);
Map<K,V> results = new HashMap<K, V>();
for (V v : values) {
results.put((K) v.getId(), v);
}
return results;
}
但这只有在键是简单类型时才有效。 我无法使其与主键一起使用,例如:
public class CompositeKey implements Serializable {
private long field1;
private long field2;
}
如何使用复合键使我的 findAll() 方法工作?
【问题讨论】:
-
你没有问任何问题。
-
这不是关于 Java 或 Spring JDBC 的问题。这是关于一般 SQL 语法和元组比较的。请更新您的问题并包括您正在使用的数据库类型。
-
另一方面 - 您将在使用
NamedParameterJdbcTemplate... 构建查询时遇到问题,因此问题的两个方面都是有效的。但是您需要知道要构造的 SQL 查询应该是什么样子。 -
我的问题与 SQL 无关。指令
:ids仅对 NamedParameterJdbcTemplate 有效,我想知道如何处理复合主键。与 SQL 无关。
标签: java spring-data jdbctemplate named-parameters