java - 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。
这可能吗?
解决方案
JdbcTemplate
仅使用?
占位符,但它有一个密切相关的类NamedParameterJdbcTemplate,它本质上是同一个类(它委托给JdbcTemplate
),但具有命名占位符,如:clientId
.
推荐阅读
- ios - 编辑 mapbox-gl-native iOS SDK 发出的所有 HTTP 请求的标头
- reactjs - 基于道具的useEffect函数打开/关闭模态仅在第一次工作(点击)
- amazon-web-services - 在 aws 上部署 Corda 节点
- python-3.x - 为什么int计算比字符串转换慢?
- api - 如果功能 1 和功能 2 使用数据驱动,并且功能 1 对一个数据失败,如何忽略功能 2 对相同数据的运行
- sql-server - T SQL Cursor 仅更新具有相同值的行
- vba - Outlook 中 TaskItem 的唯一 ID
- python - 如何将日期时间数据框列转换为 int64,将值 2018-08-01 替换为 20180801?
- scala - 如何使用 Doobie 在插入语句中获得可选结果?
- python - 如何用 numpy 命令替换列表理解?