本例子说明如何通过Groovy执行SQL
先看一下这个例子:
piEstimate = 3;
println("Pi is about ${piEstimate}");
println("Pi is closer to ${22/7}");
这个例子显示出,在串中,用${}可以进行表达式计算。
这个特性在下面要经常用到。
例子1:执行简单查询
看下面的3行代码:
import groovy.sql.Sql
sql = Sql.newInstance("jdbc:jtds:sqlserver://serverName/dbName-CLASS;domain=domainName", "username",
"password", "net.sourceforge.jtds.jdbc.Driver")
sql.eachRow("select * from tableName", { println it.id + " -- ${it.firstName} --"} );
前两行代码一看就知道什么意思了。
最后一行代码用到了eachRow函数,显示了Groovy SQL执行的方便性。这行代码执行一个查询语句,执行的结果被逐行打印出来(注意这里it是Closure的匿名参数)。
输出结果实例:
001 -- Lane --
例子2:从数据库中查询单行数据
如果只想查询单行数据,那就按下面的写法:
row = sql.firstRow("select columnA, columnB from tableName")
println "Row: columnA = ${row.columnA} and columnB = ${row.columnB}"
例子3:更复杂的例子
前面两个例子太简单了,GroovySql能力远不止于此,更复杂的插入、更新和删除操作也都是很方便可以支持的。
看一下下面这个例子,用到了execute方法
firstName = "yue"
lastName = "wu"
sql.execute("insert into people (firstName, lastName) "+
" values ('${firstName}', ${lastName})")
注意这个例子里,你不得不进行原始的拼串操作,这是不理想的,可以改进一下。
firstName = "yue"
lastName = "wu"
sql.execute("insert into people (firstName, lastName) "+
" values (?,?)", [firstName, lastName])
这样是不是就好多了?
再看用executeUpdate的例子:
comment = "Lazy bum"
sql.executeUpdate("update people set comment = ? where id=002", [comment])
delete也是一样:
sql.execute("delete from word where word_id = ?" , [5])