JDBCTemplate - 如何以Map<String, Object>为参数源运行UPDATE语句?

问题描述 投票:0回答:1

对于一个INSERT语句,可以做如下操作(db是一个自动连接的JdbcTemplate)。

var insert = new SimpleJdbcInsert(db)
    .withTableName("orders")
    .usingGeneratedKeyColumns("id");

Map<String, Object> params = new HashMap<String, Object>();
params.put("clientId", 25);

var key = insert.executeAndReturnKey(params);

我找不到一个不需要逐个传递每个参数的等价更新方法。 我在这个过程中大量使用了反射和泛型,我根本无法列出每个参数。 我希望能够做这样的事情。

db.update("UPDATE orders set clientId = ? WHERE id = ?", params, id);

其中params是一个包含要更新的参数名称和值的映射,id是要影响的行的ID。

这可能吗?

java parameters sql-update spring-jdbc jdbctemplate
1个回答
1
投票

JdbcTemplate 只使用 ? 占位符,但它有一个密切相关的类 NamedParameterJdbcTemplate 基本上是同一个类(它委托给了 JdbcTemplate),但使用命名的占位符,如 :clientId.

© www.soinside.com 2019 - 2024. All rights reserved.