Groovy,如何传入内联变量,即文件中的 ${variable} 语句?

标签 groovy groovy-sql

我在 Groovy 中遇到一个有趣的问题。希望可以有人帮帮我。

基本上我使用的是 Groovy Sql。我需要选择不同数据库中的多个表。我的第二个查询取决于其他查询,例如:"select * from table1-in-db1 where key = ${result-of-other-query1}。如果我在函数。但是,我的问题是 sql 是在 xml 文件中定义的,并且在我检索作为字符串传入函数之后。它不再解释内联变量,即使我确实有一个名为 result 的变量-of-other-query1 在范围内。

这是一段 sudo 代码:

doQuery(String squery, String tquery) {

//query db1.
//squery = "select key1 from table1"
db1.rows(squery).each {row->

    //query db2.        
    //tquery ="select * where myKey ='${row.key1}'"
    println tquery

    tdb.rows(tquery).each { row1 ->
       .... // get error here, coz groovy did not replace ${row.key1}       
    }   
  }
}

有什么方法可以告诉 Groovy 替换内联变量,即使它是作为字符串传入的?

非常感谢您提前提供的帮助

最佳答案

尝试

tquery = 'select * where myKey =:foo'

tdb.rows(tquery,[foo:"$row.key1"]).each

您可能还想考虑使用eachRow而不是rows.(query).each

关于Groovy,如何传入内联变量,即文件中的 ${variable} 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131347/

相关文章:

groovy - 在 Groovy 中保存或更新

groovy - IntelliJ IDEA 中的 .story 文件没有语法突出显示

java - 从 groovy 中访问 java 类

mysql - 如何通过 Groovy sql 字符串调用 SQL 的 now()?

unit-testing - Spock 中的运行时异常模拟 groovy.sql

mysql - 您如何知道 GroovyString 何时不被视为与字符串相同?

java - XSL 转换模板仅返回最后一个属性值

java - 如何解决 Groovy 与 Apache Common Logging 的冲突?

mysql - GroovySQL : How to update a table with Arraylist variables