您的結果將作爲地圖列表返回,而不是列表列表。看看內部的':'和','字符。你可以使用標準的groovy從這些值中提取值。
就你而言,它看起來像你正在使用主鍵搜索,所以只會返回一個結果,因此在這種情況下使用firstRow
,這樣就不必從列表中提取單個映射結果。
有關示例,請參閱groovy Sql class的文檔。
在您返回多行更一般的情況,那麼你的數據大概是這樣的:
[[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 functions
println results.collect { "${it.username} -> ${it.password}" }
==> [ "foo -> foopass", "bar -> barpass" ]
的,我認爲你的主要問題是沒有認識到一個列表中的單個映射條目。