java - Jooq:批量插入多条记录

标签 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 来构建查询并使用其他机制执行查询。不是我的选择,但系统就是这样。

最佳答案

您可以从 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/

相关文章:

java - 尽管我有表但不存在错误

java - 如何更新或删除 .txt 文件中的特定行?

php - 基于带字母的整数创建一个 ID

sql - 仅从 phpbb 的类别中的所有主题中获取最后一篇文章

java - PL/SQL/Java - SQL 选择、for 循环、if 语句和列表

java - Tomcat 7 启动Web App失败并抛出java.lang.RuntimeException : Illegal type for StackMapType: -89

java - Weblogic服务器中的@WebServlet

php - HTML 表格显示 PHP 源代码,而不是变量中的数据

MySQL将身份验证类型从标准更改为caching_sha2_password

php - 如何阻止在 MySQL 中插入空字符串