JDBCTemplate - 如何 运行 以 Map<String, Object> 作为参数源的 UPDATE 语句?
JDBCTemplate - How to run an UPDATE statement with a Map<String, Object> as the parameter source?
对于 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。
这可能吗?
JdbcTemplate
只使用 ?
占位符,但它有一个密切相关的 class NamedParameterJdbcTemplate 本质上是相同的 class (它委托给 JdbcTemplate
) 但带有命名占位符,例如 :clientId
.
对于 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。
这可能吗?
JdbcTemplate
只使用 ?
占位符,但它有一个密切相关的 class NamedParameterJdbcTemplate 本质上是相同的 class (它委托给 JdbcTemplate
) 但带有命名占位符,例如 :clientId
.