将数据库列值存储到 Groovy 中的字符串
Store DB columns values to string in Groovy
我正在尝试将 Sql 查询结果存储到字符串。
def DBlist = con.rows("select a.pkResourceItemsID,b.fieldValue,a.fkResourceID,a.fkCountryID,b.fkLocationID,b.fkBusinessUnitID,b.floor from tblResourceItems a inner join tblresourceitemData b on a.pkResourceItemsID=b.fkResourceItemID where a.pkResourceItemsID='$id'" )
log.info "DB_List = ${DBlist}"
我得到的结果:
DB_List =[[pkResourceItemsID:2000, fieldValue:Hello, fkResourceID:1, fkCountryID:1, fkLocationID:88, fkBusinessUnitID:518, floor:1]]
我想要的结果:
DB_List =[2000, Hello, 1, 1, 88, 518, 1]
我尝试过的:
def a = DBlist.pkResourceItemsID
它给我结果 [2000]
,但我一次只能对一列执行此操作。
不知道如何处理所有列。如何实现?
Sql.rows(GString query)
returns a List<GroovyRowResult>
这就是为什么当您对返回的对象进行 println
时,您会得到:
[[pkResourceItemsID:2000, fieldValue:Hello, fkResourceID:1, fkCountryID:1, fkLocationID:88, fkBusinessUnitID:518, floor:1]]
如果您只想要一个仅包含结果值的列表而不是这个,您可以对 Sql.rows()
方法调用返回的对象执行以下操作:
// for each row in the result list
def rowResults = DBlist.collect{ row ->
// get only the column values
row.keySet().collect { row[it] }
}
这是一种通用方法,因为 rows()
returns 多个结果,现在您有一个列表列表,其中每个列表仅包含值。
如果您只对第一个结果感兴趣;获取该列表中的第一个对象:
println rowResults[0]
// [2000, Hello, 1, 1, 88, 518, 1]
另一种方法:使用 firstRow
代替
如果您的查询旨在仅获得一个结果,请使用 firstRow()
而不是 rows()
,这样您将直接获得 GroovyRowResult
而不是 List<GroovyRowResult>
, 然后你可以很容易地得到所有没有列名的值:
def DBlist = con.firstRow("select a.pkResourceItemsID,b.fieldValue,a.fkResourceID,a.fkCountryID,b.fkLocationID,b.fkBusinessUnitID,b.floor from tblResourceItems a inner join tblresourceitemData b on a.pkResourceItemsID=b.fkResourceItemID where a.pkResourceItemsID='$id'" )
def rowValues = DBlist.keySet().collect { DBlist[it] }
println rowValues
// [2000, Hello, 1, 1, 88, 518, 1]
我正在尝试将 Sql 查询结果存储到字符串。
def DBlist = con.rows("select a.pkResourceItemsID,b.fieldValue,a.fkResourceID,a.fkCountryID,b.fkLocationID,b.fkBusinessUnitID,b.floor from tblResourceItems a inner join tblresourceitemData b on a.pkResourceItemsID=b.fkResourceItemID where a.pkResourceItemsID='$id'" )
log.info "DB_List = ${DBlist}"
我得到的结果:
DB_List =[[pkResourceItemsID:2000, fieldValue:Hello, fkResourceID:1, fkCountryID:1, fkLocationID:88, fkBusinessUnitID:518, floor:1]]
我想要的结果:
DB_List =[2000, Hello, 1, 1, 88, 518, 1]
我尝试过的:
def a = DBlist.pkResourceItemsID
它给我结果 [2000]
,但我一次只能对一列执行此操作。
不知道如何处理所有列。如何实现?
Sql.rows(GString query)
returns a List<GroovyRowResult>
这就是为什么当您对返回的对象进行 println
时,您会得到:
[[pkResourceItemsID:2000, fieldValue:Hello, fkResourceID:1, fkCountryID:1, fkLocationID:88, fkBusinessUnitID:518, floor:1]]
如果您只想要一个仅包含结果值的列表而不是这个,您可以对 Sql.rows()
方法调用返回的对象执行以下操作:
// for each row in the result list
def rowResults = DBlist.collect{ row ->
// get only the column values
row.keySet().collect { row[it] }
}
这是一种通用方法,因为 rows()
returns 多个结果,现在您有一个列表列表,其中每个列表仅包含值。
如果您只对第一个结果感兴趣;获取该列表中的第一个对象:
println rowResults[0]
// [2000, Hello, 1, 1, 88, 518, 1]
另一种方法:使用 firstRow
代替
如果您的查询旨在仅获得一个结果,请使用 firstRow()
而不是 rows()
,这样您将直接获得 GroovyRowResult
而不是 List<GroovyRowResult>
, 然后你可以很容易地得到所有没有列名的值:
def DBlist = con.firstRow("select a.pkResourceItemsID,b.fieldValue,a.fkResourceID,a.fkCountryID,b.fkLocationID,b.fkBusinessUnitID,b.floor from tblResourceItems a inner join tblresourceitemData b on a.pkResourceItemsID=b.fkResourceItemID where a.pkResourceItemsID='$id'" )
def rowValues = DBlist.keySet().collect { DBlist[it] }
println rowValues
// [2000, Hello, 1, 1, 88, 518, 1]