gpt4 book ai didi

java - 如何使用原始 SQL 在 jOOQ 中进行批量插入?

转载 作者:行者123 更新时间:2023-11-29 03:18:10 24 4
gpt4 key购买 nike

我需要使用动态构建的 SQL 进行批量插入。

我发现文档中的示例都使用 jOOQ 生成的表包装器类,我这里没有,我宁愿不必弄清楚和指定列名(插入使用表的所有列定义的顺序)。

我该怎么做?

我已经尝试了以下方法,但它不起作用(绑定(bind)变量都以 NULL 结束)。

import org.h2.Driver;
import org.jooq.DSLContext;
import org.jooq.impl.DSL;
import org.junit.Test;

public class BatchBindTest {

@Test
public void test() throws SQLException {
Connection conn = new Driver().connect("jdbc:h2:./batchBindTest", null);
DSLContext x = DSL.using(conn);
x.execute("create table test(id integer not null)");


// this does not work, value is not bound
x.batch("insert into test values(?)").bind(1).execute();

}

}

最佳答案

这是 jOOQ 3.4.2 中的错误:#3547

DSLContext.batch(String)只是方便 DSLContext.batch(Query) ,将查询字符串包装在普通 SQL Query 类型中。不幸的是,需要知道绑定(bind)值的数量才能应用绑定(bind)值。因此,解决此问题的方法是编写:

x.batch(x.query("insert into test values(?)", new Object[1])).bind(1).execute();

这当然只是 #3547 修复之前的解决方法。

关于java - 如何使用原始 SQL 在 jOOQ 中进行批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com