首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用SimpleJdbcInsert和MapSqlParameterSource批量插入?

如何用SimpleJdbcInsert和MapSqlParameterSource批量插入?
EN

Stack Overflow用户
提问于 2018-03-12 23:40:03
回答 2查看 1.9K关注 0票数 1

下面的方法是可行的,但是如何收集多个MapSqlParameterSource并将它们全部插入到一个批处理中呢?

代码语言:javascript
复制
new SimpleJdbcInsert(ds).withTableName(TABLENAME);

MapSqlParameterSource entry = new MapSqlParameterSource()
    .addValue("id", report.queryId, Types.INTEGER)
    .addValue("firstname", report.reportDate, Types.DATE)
    .addValue("age", report.completionRatio, Types.INTEGER);

insert.execute(entry);
EN

回答 2

Stack Overflow用户

发布于 2018-03-13 17:19:32

幸运的是,SimpleJdbcInsert可以接受MapSqlParameterSource的数组(而不是列表)。因此,可能如下所示:

代码语言:javascript
复制
List<MapSqlParameterSource> entries = new ArrayList<>();
entries.add(entry);

MapSqlParameterSource[] array = entries.toArray(new MapSqlParameterSource[entries.size()]);
insert.executeBatch(array);
票数 1
EN

Stack Overflow用户

发布于 2020-03-10 21:52:24

有一种更好的方法可以用SqlParameterSourceUtils来实现

代码语言:javascript
复制
private final List<Map<String, Object>> records = new LinkedList<>();

final SimpleJdbcInsert statement = new SimpleJdbcInsert(dataSource)
        .withTableName("stats")
        .usingGeneratedKeyColumns("id")
        .usingColumns("document", "error", "run", "celex");

      statement.executeBatch(SqlParameterSourceUtils.createBatch(records));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49239139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档