【问题标题】:Spring Batch Get Autogenerated Id for next InsertSpring Batch 为下一次插入获取自动生成的 ID
【发布时间】:2021-08-16 21:56:55
【问题描述】:

我正在编写一个 spring 批处理应用程序,并且有一个输入 csv 文件,该文件具有多行,其中包含唯一的人名和他们的电话号码。在 csv 中,我保证人与电话号码是一对一的关系,但是我想将这些插入到数据库中,其中人与电话之间存在一对多的关系。

我知道如何单独插入每个人,但是在插入电话时,我想获取插入人以创建一对多关系时自动生成的 ID。

除非我编写一个自定义处理器将 http 请求发送到后端或直接访问数据库以创建人员,然后使用编写器创建电话号码条目,否则不确定最好的方法。

【问题讨论】:

  • 不完全是,如果我在处理器中使用它可能就是这样做的,但我认为这不是最佳方式。会认为有更好的方法来做到这一点。
  • 定义“更好”
  • 更少的代码和编写一堆样板代码来连接数据库。认为有一种方法可以像使用基本插入一样使用弹簧批处理,但具有更多逻辑。
  • 好吧,您可以简单地使用您的 RDBMS 提供的方法来获取最后一个插入 ID,并将其合并到您的 INPUT 语句中。问题是,插入第一个电话号码后,就不再返回人名了

标签: spring spring-batch


【解决方案1】:

只需在 SQL 中的第一个插入周围使用 WITH 语句,然后使用该临时结果返回 id,就能够做到这一点。然后在外面使用 insert into select from 在另一个表上进行第二次插入。给第二个插入 id 变量,然后为其他列值插入“consts”。

https://gist.github.com/yodigi7/5982bc31662e5160389ccb46b39ae558

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2011-07-21
    • 2017-11-05
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多