[英]How do I do a batch insert in jOOQ with raw SQL?
我需要使用动态构造的SQL进行批量插入。
我发现文档中的所有示例都使用jOOQ生成的表包装器类,这里没有,我希望不必弄清楚并指定列名(插入使用表定义顺序的所有列) 。
我怎么做?
我已经尝试了以下方法,但是它不起作用(将变量全部绑定为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
类型。 不幸的是,为了应用绑定值,需要知道绑定值的数量。 因此,解决此问题的方法是编写:
x.batch(x.query("insert into test values(?)", new Object[1])).bind(1).execute();
当然,这只是解决#3547之前的一种解决方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.