所以我只使用 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 来构建查询并使用其他机制执行查询。不是我的选择,但系统就是这样。
最佳答案
您可以从 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();
DSLContext 中的 batch(...)
函数不返回 Query 对象,而是返回 Batch 对象(不是 Query 的子类型)。请参阅API docs了解更多信息。
关于java - Jooq:批量插入多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59001070/