您的结果以地图列表的形式返回,而不是列表列表。查看内部的 ':' 和 ',' 字符。您可以使用标准 groovy 从这些值中提取值。
在您的情况下,看起来您正在使用主键搜索,因此只会返回一个结果,因此firstRow
在这种情况下使用,这样您就不必从列表中提取单个映射结果。
有关示例,请参阅groovy Sql 类的文档。
在返回多行的更一般情况下,您的数据可能如下所示:
[[username:"foo", password:"foopass"], [username:"bar", password:"barpass"]]
假设这条线:
def results = sql.rows('select * from user')
然后,您可以执行传播运算符之类的操作:
assert results.username == ["foo", "bar"]
assert results.password == ["foopass", "barpass"]
或迭代结果
results.each { println it.username }
==> foo
==> bar
或使用许多Collection 函数中的任何一个
println results.collect { "${it.username} -> ${it.password}" }
==> [ "foo -> foopass", "bar -> barpass" ]
我认为您的主要问题是无法识别列表中的单个地图条目。