簡體   English   中英

如何在Spring中僅使用自動生成的值將行插入DB,並返回ID?

[英]How to insert a row to DB in spring, using only auto-generated values, and return an ID?

我使用spring框架,並想在數據庫中插入一行以獲取其ID,這是進行進一步處理所必需的。 插入查詢如下所示,它是一個簡單的查詢,沒有參數。 但是,更糟糕的是,導致如何使用SimpleJdbcInsert executeAndReturnKey構造工作調用? 這是一個用於插入的SQL查詢。 但是我不知道在simpleJdbcInsert實例中是否可以使用它。

insert into sdc_import_run(id_import_run, create_date)
values(nextval('seq_import_run'),now())

我試過了

Number genId = simpleJdbcInsert.withTableName("sdc_import_run")
            .usingGeneratedKeyColumns("id_import_run")
            .executeAndReturnKey(new MapSqlParameterSource());

它不起作用,問題是,它們想要表的所有參數,但是我不想要其中的任何一個,我只想插入自動生成的: id_import_run (主鍵)和create_date 結果,我想在變量中插入ID。 你會怎么做?

編輯這種方法行之有效。

public Integer persistInsertImportRunForId(){
    String queryString = getSql("insertImportRunForId");
    KeyHolder holder = new GeneratedKeyHolder();
    jdbcTemplate.update(con -> {
            return con.prepareStatement(queryString, Statement.RETURN_GENERATED_KEYS);
        }, holder
    );

    return CommonUtils.tryOrGet(() -> holder.getKeys().get("id_import_run"), null);
}

您可以使用JdbcTemplate運行完整的插入SQL。 您可以在此處提供您想要的任何SQL,並且為您的插入定義的列數可以少或多,只要表的DDL允許。

該答案將對此進行更詳細的介紹。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM