Jooq:批量插入多个记录

时间:2019-11-22 20:08:10

标签: java mysql sql database jooq

因此,我仅使用Jooq构建查询,而不使用查询,例如:

AsyncTransactionalConnection conn = getAsyncTransactionalConnection();
InsertResultStep<PersonRecord> insert = /* create insert statement ... */;
conn.asyncExecute(insert);

conn对象可以执行查询conn.asyncExecute(org.jooq.Query query)。 所以我的问题是,如何创建类型为org.jooq.Query的批处理插入查询? 具体来说,给定一个列表List<InsertResultStep<PersonRecord>>,如何为整个列表创建org.jooq.Query的实例?

请注意,我知道其他问题,询问如何使用Jooq进行批量插入,但是他们使用Jooq来执行查询,就像下面的Jose Martinez的回答一样,而在这里,我仅使用Jooq来构建查询和使用其他机制执行查询。不是我的选择,但是系统就是这样。

1 个答案:

答案 0 :(得分:0)

在DSLContext中,您可以创建一个批处理并同时执行它。

-match

DSLContext中的dslContext.batch( create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(1, "Erich" , "Gamma" ), create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(2, "Richard", "Helm" ), create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(3, "Ralph" , "Johnson" ), create.insertInto(AUTHOR, ID, FIRST_NAME, LAST_NAME).values(4, "John" , "Vlissides")) .execute(); 函数不返回Query对象,而是返回Batch对象(不是Query的子类型)。有关更多信息,请参见API docs

相关问题