java或groovy将地图插入数据库

时间:2017-05-01 19:16:08

标签: jdbc groovy

我有这样的代码

def myMap = [key1 : val1, key2 : val2]

sql.executeInsert("Insert into tableName(key1, key2) Values(?, ?)", myMap)

我想创建一个方法来处理我传入的任何映射。就像在,它应该能够创建一个insert语句,其中键的值正确映射,最重要的是sql注入安全。但是我可以找到的所有插入操作的示例都不是注入安全的,或者是硬编码到特定值。

例如,这是一个以非注入安全方式http://www.bloggure.info/.groovy/work/quickly-insert-data-to-a-sql-database-in-groovy/

执行此操作的示例

1 个答案:

答案 0 :(得分:1)

你应该可以这样做:

import groovy.sql.*

def myMap = [key1 : 'val1', key2 : 'val2']

def generateSql(Map map) {
    Closure<String> keys = { -> map.keySet().collect { Sql.expand(it) }.join(', ') }
    Closure<String> values = { -> map.keySet().collect { ":${it}" }.join(', ') }
    "insert into tablename(${keys()}) values(${values()})"
}

sql.executeInsert(generateSql(myMap), myMap)