作为参数源?,java,parameters,sql-update,spring-jdbc,jdbctemplate"/>

首页 > 解决方案 > JDBCTemplate - 如何使用 Map 运行 UPDATE 语句作为参数源?

问题描述

对于 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。

这可能吗?

标签: javaparameterssql-updatespring-jdbcjdbctemplate

解决方案


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


推荐阅读