groovy oracle结果大写列名问题

groovy oracle result capital column name issue

在 Groovy 中,要设置一个 bean,您只需要在创建对象时提供 GroovyRowResult。

考虑下面的 People.groovy bean:

class People {
    String name
    int age
}    

我的sql查询:

select * from People -- returns name and age of people

返回 GroovyRowResult,其中列名(键)大写:[NAME:"Alex", AGE: 21]。 所以当我尝试像下面这样设置 bean 时:

le.rows(sqlQuery).each {
    People p = new People(it)
}

我收到异常: groovy.lang.MissingPropertyException: No such property: NAME for class: People. Possible solutions: name

我想我可以修改 sql 查询以在别名上包含双引号,但是你们处理它有什么不同吗?

rows() 方法 returns a List<GroovyRowResult> 其中 GroovyRowResult 实现 Map 然后你可以应用 collectEntries 对其进行转换,以便键为小写,您可以使用生成的映射:

sql.rows('select * from people').each {
    People p = new People(it.collectEntries { k,v -> [k.toLowerCase(), v] })    
    println p.name
    println p.age
}