我使用JOOQ动态地构建SQL,因为我更喜欢使用好的旧JDBCTemplate来执行和维护自己的域对象,而不是使用JOOQ生成它们。INSERT INTO my_table(field1, field2, ..., field20) values(<VALUES>);
我想用动态的方式构造这个SQL语句,为了用这种方式构造一个select语句,我使用了SelectQuery和addOrderBy、addConditions、join等方法。
是否有任何方法可以将列名 (即field1、field2、...、field20) 添加到InsertQuery中?我希望执行以下操作:
InsertQuery<Record> insertQuery = ctx.insertQuery(table("my_table"));
insertQuery.addColumns("field1", "field2", ..., "field20");
for (List<Object> values : valuesList) {
insertQuery.addValues(values);
}
getJdbcTemplate().batchUpdate(insertQuery.getSQL(), insertQuery.getValues(), batchSize);
1条答案
按热度按时间mkshixfv1#
您可以使用:
注意,用jOOQ的术语来说,这不是一个批
INSERT
语句(多个单独的语句,单个JDBC往返),而是一个批量INSERT
语句(单个单独的语句,具有多行),它对应于您所尝试的内容,如果您更喜欢Batch
语句,那么只需创建一个如下所示的虚拟INSERT
:并提取它的SQL,因为您不打算使用jOOQ执行查询,所以不需要将所有绑定值传递给jOOQ,只需要传递给JdbcTemplate。