2017-08-22 186 views
0

我試圖迭代表數據並將表記錄保存到Groovy Map中,但只有最後一條記錄保存在地圖中。Grails/Groovy - 在Map中返回MySQL記錄只保留最後一條記錄

服務守則員工的下面

class EmployeeService { 

    def dataSource 

    def printTable(){ 
     def sql = new Sql(dataSource) 
     def tableMap = [:] 
     int count=0 
     sql.eachRow("SELECT * FROM employee") { row -> 
      tableMap.'first_name' = row.first_name 
      tableMap.'last_name' = row.last_name 
      tableMap.'born' = row.born 
      print "\nIteration No " + count 
      count++ 
     } 
     sql.close() 
     for (e in tableMap) {print "key = ${e.key}, value = ${e.value}"} 
    } 

表中的記錄:

enter image description here

這是該映射完成迭代後:

enter image description here

回答

2

試試這個

def list = [] 
    int count = 0 
    sql.eachRow("SELECT * FROM employee") { row -> 
     def tableMap = [:] 
     tableMap.'first_name' = row.first_name 
     tableMap.'last_name' = row.last_name 
     tableMap.'born' = row.born 
     list << tableMap 
     print "\nIteration No " + count 
     count++ 
    } 
    list.each { 
    for (def e in it) { 
     print "key = ${e.key}, value = ${e.value}" 
    } 
} 

您需要創建一個列表來存儲所有地圖,否則在地圖舊值將被新值所取代。

+1

或者只是使用sql.rows()返回一個GroovyResultSet。不需要像這樣循環每個結果。 –

+0

@aristotll,謝謝!!! –

相關問題