jOOQ - 插入多个数据并获取生成的ID的一般方法

时间:2014-08-20 14:56:43

标签: java sql jooq

当我需要每个元素的生成密钥时,通过jooq插入多个数据的一般方法是什么?

通常我会使用批量插入,由于this,目前无法进行批量插入。

我可以使用create.newRecord(...)并分别插入每个元素。之后,ID设置正确,但这种方法性能不佳。

我希望有人有更好的方法,我不能成为唯一需要此功能的人...

提前多多谢谢,
tohoe

1 个答案:

答案 0 :(得分:1)

正如您自己发现的那样,jOOQ 3.4.2目前在问题#3327中记录了DSLContext.batchStore()之后提取ID的限制。

可能运行良好的解决方法是创建包含所有记录的大INSERT .. RETURNING语句,例如:

DSL.using(configuration)
   .insertInto(TABLE)
   .set(record1)
   .newRecord()
   .set(record2)
   .newRecord()
   ...
   .returning()
   .fetch();

当然,这只是一种解决方法,甚至可能不如批处理那样好,因为声明可能会变得非常大。