繁体   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