【问题标题】:Spring boot - Jdbc batch insert with returning idsSpring boot - 带有返回 id 的 Jdbc 批量插入
【发布时间】:2019-12-10 18:48:20
【问题描述】:

假设我们有一个表users

id | name
_________
1  | name1
2  | name2

我可以通过以下方式在 users 表中插入一条记录并获取插入的 id。

  • 尝试使用 SimpleJdbcInsert 插入记录并使用 executeAndReturnId() 方法获取插入的 id
  • 还尝试使用返回子句和 queryForObject() 插入和获取插入的 id
query = INSERT INTO users(name) VALUES('name3') RETURNING id;
insertedId = jdbcTemplate.queryForObject(query, Long.class);

对于批量插入:

query = INSERT INTO users(name) VALUES(?) RETURNING id;
List<Object[]> objects = new ArrayList<Object[]>(new Object[]{'name3'}, new Object[]{'name4'});
int[] rowsAffected = jdbcTemplate.batchUpdate(query, objects); // this only return affected rows in array

如何使用批量插入获取所有插入的 ID?

试过already asked question也..没用:(

【问题讨论】:

  • 您能否更具体地了解用例
  • 需要使用 jdbcTemplate @Gowtham 插入 id

标签: java psql jdbctemplate batch-insert


【解决方案1】:

尝试使用int[] 而不是int[][]

【讨论】:

  • 为此,我们需要使用另一个包含 ParameterizedPreparedStatementSetter 的 batchUpdate() 声明。它用于获取批量影响的行数。
猜你喜欢
  • 1970-01-01
  • 2014-08-13
  • 1970-01-01
  • 2023-03-18
  • 2018-05-17
  • 2012-02-26
  • 2013-10-11
  • 1970-01-01
  • 2019-02-09
相关资源
最近更新 更多