【问题标题】:How to get the Primary Key when doing Batch Update in Spring Jdbc NamedParameterJdbcTemplate?Spring Jdbc NamedParameterJdbcTemplate批量更新时如何获取主键?
【发布时间】:2022-11-03 08:50:32
【问题描述】:

我正在努力Spring Batch 和 Spring Jdbc我在哪里使用NamedParameterJdbcTemplate 的batchUpdate 将记录插入数据库,一旦插入记录,我想获取所有插入记录的主键..

有没有办法获取生成的主键?

List<Person> persons = Arrays.asList(
        Person.create("Dana", "Whitley", "464 Gorsuch Drive"),
        Person.create("Robin", "Cash", "64 Zella Park")
);

String sql = "insert into Person (first_Name, Last_Name, Address) " +
        "values (:firstName, :lastName, :address)";

List<Map<String, Object>> batchValues = new ArrayList<>(persons.size());
for (Person person : persons) {
    batchValues.add(
            new MapSqlParameterSource("firstName", person.getFirstName())
                    .addValue("lastName", person.getLastName())
                    .addValue("address", person.getAddress())
                    .getValues());
}

int[] updateCounts = namedParamJdbcTemplate.batchUpdate(sql,
                           batchValues.toArray(new Map[persons.size()]));

【问题讨论】:

    标签: spring postgresql spring-batch spring-jdbc


    【解决方案1】:

    我回答了一个类似的问题here

    诀窍是在NamedParamJdbcTemplate#batchUpdate 上使用NamedParamJdbcTemplate#query 并将returning &lt;generated_column&gt; 添加到您的插入sql

    【讨论】:

      猜你喜欢
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多