对于一个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
只使用 ?
占位符,但它有一个密切相关的类 NamedParameterJdbcTemplate 基本上是同一个类(它委托给了 JdbcTemplate
),但使用命名的占位符,如 :clientId
.