Jooq:批量插入多个记录

问题描述 投票:0回答:1

因此,我仅使用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执行查询,而在这里我仅使用Jooq构建查询并使用其他机制执行查询。不是我的选择,但是系统就是这样。

java mysql sql database jooq
1个回答
0
投票

从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(...)函数不返回查询对象,而是返回一个批处理对象(不是查询的子类型)。有关更多信息,请参见API docs

© www.soinside.com 2019 - 2024. All rights reserved.