jdbc - 使用groovy Sql批量插入?

标签 jdbc groovy batch-processing

在模拟准备好的语句时,如何使用 groovy Sql 进行批量插入?我发现的所有示例都类似于以下示例,并且不使用准备好的语句。

withBatch  { stmt ->
stmt.addBatch("insert into table (field1,field2) values('value1','value2')")
stmt.addBatch("insert into table (field1,field2) values('value3','value4')")
}
根据此链接https://issues.apache.org/jira/browse/GROOVY-3504无法直接从批处理中使用准备好的语句。模拟这种情况的最佳方法是什么,这样我就可以避免编写自己的代码来避免 sql 注入(inject)?

最佳答案

Groovy 1.8.1 引入了对带有批处理的预处理语句的支持。简单的例子:

sql.withBatch(20, """update some_table 
                        set some_column = :newvalue 
                      where id = :key """) { ps ->                 
          mymap.each { k,v ->
              ps.addBatch(key:k, newvalue:v)
          }
}

另请参阅我关于该主题的帖子:http://novyden.blogspot.com/2011/09/groovy-batch-prepared-statement-nice.html

关于jdbc - 使用groovy Sql批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848857/

相关文章:

R 批处理模式 : How to see output/error of R on console screen?

java - 确定变量类型

hive - 直线相当于配置单元静默模式

java - Jackson 内部使用 java 序列化还是完全独立?

java语句、oracle nvl、LIKE比较

java - 如何判断 JDBC 执行更改的行数

mysql - 如何在 jdbc 数据源中使用 dbtable 选项的子查询?

java - 搜索字符串并获取第二个匹配项

groovy - 如何从 CliBuilder 获取非选项参数?

spring boot 处理大请求体 - 通过多线程处理批量