2014-02-05 41 views
0

mysql數據庫,版本5.5.17.JDBC驅動程序版本5.1.28 代碼的GString:使用Groovy字符串作爲SQL SELECT語句

def p = "id" 

def row = sql.firstRow("select $p from Model") 

print row 

結果:

[id:id] **!** 

代碼,而不的GString:

def row = sql.firstRow("select id from Model") 

print row 

結果:

[id:1] 

爲什麼?

回答

2

Groovy的是逃避p,因爲它會將其作爲SQL參數

嘗試使用Sql.expand像這樣:

def p = 'id' 
def row = sql.firstRow("select ${Sql.expand(p)} from Model") 
+0

如何只使用$ {P}?沒有那份工作? –

+0

@DavidHofmann不,這將與'$ p'相同 –

+0

@DavidHofmann謝謝,也可以用於下一個解決方案:sql.firstRow(「從模型中選擇$ p作爲字符串」),sql.firstRow(「從模型中選擇$ p 「.toString()) – user2187298