将两列的 sql.GroovyRowResult 转换为映射

Seb*_*Seb 1 groovy

我有一个GroovyRowResult带有两列的 groovy (使用 sql.rows)。第一列在 sql 中有一个 group by,所以它总是唯一的。

现在我想将整个结果转换成一个映射,其中包含第一列值作为键和第二列值作为值。我知道我可以对每一行都这样做(见下文),但想知道是否有更好的方法。我发现的唯一一件事是 entrySet(),它不起作用。错误是:

Message: No signature of method: 
java.util.ArrayList.entrySet() is applicable for argument types: () values: [])
Run Code Online (Sandbox Code Playgroud)

所以我的每一行方式是:

def myMap = [:]
result.each {
    myMap.put(it.colum1, it.column2)
}
Run Code Online (Sandbox Code Playgroud)

另一种选择是,以某种方式进行查询,该查询将返回一个以第一列作为键,第二列作为值(或整行作为值)的映射。Zend 框架的一种 fetchAssoc() 方法。

tim*_*tes 5

你可以这样做:

def myMap = result.collectEntries {
    [ it.column1, it.column2 ]
}
Run Code Online (Sandbox Code Playgroud)