- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个方法来使用 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;
}
但这仅在 key 为简单类型时才有效。我无法使其与主键一起使用,例如:
public class CompositeKey implements Serializable {
private long field1;
private long field2;
}
如何使用复合键使用 findAll() 方法?
最佳答案
您的问题应分部分回答:
SELECT
结合IN
和元组比较SELECT
使用NamedParameterJdbcTemplate
PostgreSQL/MySQL(也可能是 Oracle):
SELECT * FROM foo WHERE (field1, field2) IN ((1, 1), (1, 3));
SQL Server(有点破解;也适用于 PostgreSQL):
SELECT * FROM foo
INNER JOIN (VALUES (1, 1), (1, 3)) AS _CONDITION(field1, field2) ON
foo.field1 = _CONDITION.field1 AND foo.field2 = _CONDITION.field2;
使用List<Object[]>
作为你的参数类型。请参阅JavaDoc for NamedParameterUtils或official documentation关于这个话题。
public List<MyObject> findByIds(Collection<MyKey> keys) {
List<Object[]> keyTuples = new ArrayList<Object[]>(keys.size());
for (MyKey key : keys) {
keyTuples.add(new Object[] { key.getField1(), key.getField2() });
}
jdbcTemplate.query("SELECT * FROM my_table WHERE (field1, field2) IN (:keys)",
Collections.singletonMap("keys", keyTuples), new MyObjectRowMapper());
}
关于java - NamedParameterJdbcTemplate 和组合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20103405/
我们使用的是 Spring 2.6,我们在系统中使用 jdbcTemplate 和 NamedparameterJdbcTemplate,配置如下。 j
我编写了一个方法来使用 NamedParameterJdbcTemplate 检索条目列表: public final Map findAll(final Collection keys) {
我正在尝试在我的 springs 应用程序中查询 sql。现在,如果我的代码包含类似的内容 - String sql="select abc,def from alphabets where char
我正在使用 Java 中的 NamedParameterJdbcTemplate 运行一个简单的 mysql 查询。 问题是我的 java 查询正在为 count 字段返回二进制值,即 1 代表所有非
我正在处理一个问题,该问题涉及编写一个查询以从数据库中获取几千条记录。我将使用的查询将在 WHERE 条件中包含 2 个 IN 子句。 据我所知,这可能是有限的,请纠正我,对于这个用例,我不能使用 j
我正在使用超酷的 jdbcTemplate(更具体地说是 NamedParameterJdbcTemplate)来运行带有 IN 子句的查询。然而,我希望查询的列表是一个枚举,因此我收到错误:“转换中
我是 Spring 新手,正在尝试编写一个使用 NamedParameterJdbcTemplate 的简单测试方法。这是: public String test() { String que
是否有办法利用 NamedParameterJdbcTemplate 而不是使用 SpringJdbcMigration 实现中的标准 JdbcTemplate 创建飞路迁移类? 我需要运行一个升级,
有没有办法设置 Spring 的 NamedParameterJdbcTemplate 对象的批量大小? 我在我的项目中遇到了一些 OutOfMemory 问题,但我能够通过在较小块的循环中调用 Na
在 Spring 的 NamedParameterJdbcTemplate 中。我如何使用 Spring 3.1.x 版查询执行“Select * from Student”以返回列表而不提供任何参数
我正在开发一个需要对 Oracle 数据库进行 JDBC 调用的项目。我已经设置了 UCP 池来与 SpringJDBC 一起使用。我有一个相当简单的查询,我正在执行如下... 从表中选择 *,其中
我想更改 NamedParameterJdbcTemplate 的结果集行为。 (禁用结果集缓存) 例如,使用 postgres jdbc 驱动程序,您可以像这样更改它: conn =
有没有办法从NamedParameterJdbcTemplate返回Optional? 我的查询有时会返回空。所以我想要一种漂亮的方法来检查是否为空。我不想对 EmptyResultDataAcces
我的代码是这样的: NamedParameterJdbcTemplate stmt; String sql = "INSERT INTO ....."; // named = ...; ... st
我正在尝试使用带有 NamedParameterJdbcTemplate 的映射参数调用存储过程(Spring 3.0),但由于某些奇怪的原因,某些值没有传递给存储过程(Oracle 11.2)! 相
在 Spring 的引用文档中,类型“NamedParameterTemplate”被引用为进行批量更新的简单方法: http://docs.spring.io/spring/docs/current
我在 Spring 中使用 NamedParameterJDBCTemplate 并尝试仅选择少数列而不是所有列。但我面临一个错误 - org.SpringFramework.BadSqlGramma
尝试更新表中的多个列值。 我缺少什么,一点帮助! dao 方法就像... dao 类 Plan 的所有字段都填充了适当的数据。 public void updatePlan(Plan plan) {
我正在使用 Spring 框架。使用 NamedParameterJdbcTemplate 时如何设置查询超时?我注意到 JdbcTemplate 有一个 setQueryTimeout(int qu
我在 TomCat 服务器上部署了一个 Spring MVC 项目,但我一直遇到与数据库的连接问题。几个小时后,当用户尝试登录时,他们将遇到 500 错误和此消息: HTTP Status 500 -
我是一名优秀的程序员,十分优秀!