连接数据库
Groovy对Java JDBC API进行了封装,提供了一个Facade -- groovy.sql.Sql,从而隐藏了获取数据库连接、关闭资源等细节
用法如下:
import groovy.sql.Sql;
db = Sql.newInstance (
url:"jdbc:sqlserver://localhost;databaseName=db_test",
user:"sa",
password:"sa", driverClassName:"com.microsoft.sqlserver.jdbc.SQLServerDriver"
)
查询
Sql对象中有很多查询方法,常用的方式如下所示:
l Query(GString, Closure),对返回的ResultSet执行Closure,示例方法如下:
db.query "Select * From T_Sport", {
while(it.next()){
println it.getString("F_Name")
}
}
l rows(GString),返回List。示例用法如下:
db.rows( "Select * From T_Sport").each {row->
println row['F_Name']
}
l eachRow(GString,Closure),对结果集的每行执行Closure。示例用法如下:
db.eachRow "Select * From T_Sport", {
println it['F_Name']
}
l firstRow(GString),返回结果集的第一条记录,示例用法如下:
def arow = db.firstRow("Select * From T_Sport")
println arow
常用GUID方法
l execute(GString),execute(String)或者execute(string,paramsList),可用于增加、更新、删除记录;
使用execute(GString)执行插入的代码如下:
def ACode = "ACode"
def AName = "AName"
def AMemo = "AMemo"
db.execute """insert into T_User(F_Code, F_Name, F_Memo)
Values(${ACode}, ${AName}, ${AMemo})"""
使用PreparedStatement的代码如下:
val = db.execute ("select * from T_User where F_ID = ?", [1])
使用execute(String)执行Sql脚本的代码如下:
String sqlFilePath = 'path/to/your/script.sql'
String sqlString = new File(sqlFilePath).text
db.execute (sqlString)
l executeInsert(GString),executeInsert(String)或者executeInsert(string,paramsList),用于增加记录;
l executeUpdate(GString),executeUpdate(String)或者executeUpdate(string,paramsList),用于更新记录。
数据集(DataSet)
这里要重点介绍的是另外一种快捷增加记录的方法--DataSet。
DataSet和数据库里的表对应,可以对DataSet的内容进行查询、增加操作。请看如下代码:
def users = db.dataSet ('T_User')
users.each { println it }
users.add (
F_Name:'李四',
F_Code:'M002',
F_Memo:'memo'
)
users.findAll {it.F_ID>0 }.sort{it.F_Name desc}.each {println it}
Date.findAll方法的成功运行要将groovy类文件的src目录放在classpath下,详情参见:
http://jira.codehaus.org/browse/GROOVY-2450
http://jira.codehaus.org/browse/GROOVY-544
从上述代码中可以看到,创建DateSet实例后,就能够获得一个Map,可以对这个Map执行findAll(whereClosure)以及sort(sortClosure)。而这里增加数据使用的是add(Map)方法。在对数据库进行增加、更新或者删除时,需要考虑事务性,以保证数据的完整性。对于此,Groovy同样提供了一个非常方便的用法。对于需要在同一个事务中完成的代码,可以使用Sql或者DataSet的withTransaction(Closure)方法实现,参见如下代码:
db.withTransaction {
for(i in 0..<5){
users.add (
F_Name:"name"+i,
F_Code:"code"+i,
F_Memo:"memo"+i)
}
db.execute 'delete from T_User Where i>0'
}
上述代码中,由于在第8行代码会出错,所以整段代码不会在T_user表中插入新的纪录的。读者可以将withTransaction方法去掉,再看看程序运行的结果。
DateSet虽然进一步简化了SQL操作,但缺点是只能适用于一张表。可以使用SQL将复杂的结果生成一个视图,之后用DataSet来访问这个视图。
上述这些就是Groovy提供的方法,它们使得跟数据库的交互变得轻松了许多!
<!--EndFragment-->
分享到:
相关推荐
Groovy 学习笔记 Groovy 学习笔记
Groovy
Groovy学习笔记,内容如下: 1.概念 2.基本语法 3.字符串 4.集合 5.类和闭包 6.控制语句 7.操作符重载 8.I/O操作 9.高级应用 10.正则表达式
对Groovy开发环境设置,基本语法做了简单明了的介绍
第1章 数字和字符串 第2章 List的简单介绍 第3章 String的特殊用法 第4章 闭包 第5章 集合+闭包 第6章 Map和Range 第7章 函数
图文并茂,适合入门新手,涵盖了基本的语法讲解及一些DEMO测试,值得一看
NULL 博文链接:https://rsljdkt.iteye.com/blog/859059
Groovy语法&Gradle配置学习笔记
Groovy_笔记
Grails Groovy 学习必备参考资料
很好的学习Groovy的学习资料, 很实用。。 个人感觉Groovy是Java敏捷开发的首选。
适合想了解groovy 编程开发的人员 Groovy - hellworld Groovy - 变量 Groovy - 静态import Groovy - 字符串 Groovy - 分支结构语句 Groovy - 循环结构语句
Groovy学习资料-中文.rar。Groovy学习资料。Grails学习资料。mht网页格式。
groovy学习大礼包,包括groovy用户指南,groovy解惑,Groovy轻松入门
您可以在 Groovy轻松入门--搭建Groovy开发环境 学习到如何搭建Groovy环境,之后我会讲一下如何搭建Grails环境,然后手把手地写个Demo程序告终,我还会抽空写篇“Groovy轻松入门- -Grails实战之进阶篇” 一,搭建...
Groovy语言。 里面详细介绍了一些很有意思的方法。
groovy入门 groovy入门 groovy入门 groovy入门groovy入门groovy入门
本例是我工作中的一些实操例子,亦是我工作日志,记录在此,既可作为我自己的总结,也可以此分享给同行借鉴。 入参是字符串格式的xml,目的...3.JDBC调用存储过程语句 4.创建Groovy脚本 5.xml入参示例 6.json出参示例