`
leon1509
  • 浏览: 538151 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)Groovy风格的JDBC编程

阅读更多
原贴地址:http://www.groovyq.net/node/157

你还记得普通的 Java JDBC 编程么?如果查询表中的内容,至少需要30行代码。如果使用Groovy,代码不超过10行。

连接数据库
Groovy对Java JDBC API进行了封装,提供了一个Facade--Sql,从而隐藏了获取数据库连接、关闭资源等细节。用法如下:

import groovy.sql.Sql
db= Sql.newInstance(
    "jdbc:mysql://localhost/iblog",
    "username",
    "password",
    "com.mysql.jdbc.Driver")
查询
Sql对象中有很多查询方法,常用方式如下所示,

query(GString,Closure),对返回的ResultSet执行Closure,示例用法如下:
db.query("select content from blog", {
    while (it.next()){    
       println it.getString("content")
    }}
)
rows(GString),返回List。示例用法如下:
db.rows("select * from blog").each{row-> println row.content }
eachRow(GString,Closure),对结果集的每行执行Closure。示例用法如下:
db.eachRow ("select * from blog",{println it.comment_num})
firstRow(GString),返回结果集的第一条记录,示例用法如下:
db.firstRow ("select * from blog")
CUD
Sql提供的CUD方法也很多,常见的有:

execute(GString),execute(String)或者execute(string,paramsList),可用于增加、更新、删除记录;
executeInsert(GString),executeInsert(String)或者executeInsert(string,paramsList),用于增加记录;
executeUpdate(GString),executeUpdate(String)或者executeUpdate(string,paramsList),用于更新记录。
上述方法用法跟原始的Java代码用法类似,这里要重点介绍的是另外一种快捷增加记录的方法--DataSet。DataSet将SQL语句隐藏,将数据集放入到一个Map中。可以对这个Map中内容进行查询、增加。请看如下代码:

1
def blogs=db.dataSet('blog') /*new DataSet(db, 'blog')或者db.dataSet(Blog)*/
2
blogs.each{ println it }
3
blogs.add(     
4
    content:'dateset using',
5
    author_id:3,
6
    date_created:new Date())
7
blogs.findAll {it.id>1 }.sort{it.version desc}.each { println it }
从上述代码中可以看到,创建DateSet实例后,就能够获得一个Map,可以对这个Map执行findAll(whereClosure)以及sort(sortClosure)。而这里增加数据使用的是add(Map)方法。

在对数据库进行增加、更新或者删除时,需要考虑事务性,以保证数据的完整性。对于此,Groovy同样提供了一个非常方便的用法。对于需要在同一个事务中完成的代码,可以使用Sql或者DataSet的withTransaction(Closure)方法实现,参见如下代码:

view sourceprint?
1
db.withTransaction{
2
    for (int i=0;i<5;i++){
3
        blogs.add(
4
        content:"dateset using"+i,
5
        author_id:3,
6
        date_created:new Date())
7
    }
8
    db.execute ("delete from iblog where i>20")
9
}
上述代码中,由于在第8行代码会出错,所以整段代码不会在blog表中插入新的纪录的。读者可以将withTransaction方法去掉,再看看程序运行的结果。

DataSet是不是简化了代码?但是DataSet不能取代SQL,DataSet只适用于单一的表,对于更复杂一些的结构比如JOIN返回的结果,就要使用SQL了。比如使用SQL将复杂的结果生成一个视图,之后用DataSet来访问这个视图。

上述这些就是Groovy提供的方法,它们使得跟数据库的交互变得轻松了许多!

本文使用Groovy 1.7.1。关于groovy.sql的中各个对象以及方法的详细参数请参见Groovy API。关于本文中用到的表结构请参见附件。
分享到:
评论

相关推荐

    IBM 实战 Groovy

    3. **JDBC编程**: Groovy提供了一种更加灵活的方式来处理数据库操作,比如查询和事务管理。 4. **MVC编程**: Groovy可以用于实现MVC架构的应用程序,通过Groovy模板引擎来处理视图层逻辑。 5. **服务器端开发**: ...

    Groovy用户指南

    Groovy不仅支持传统的面向对象编程特性,还支持函数式编程风格,这使得它成为Java平台上一个非常有用的工具。此外,Groovy还有丰富的元编程能力,可以极大地提高开发效率。 #### 二、Groovy的基础语法 1. **变量...

    groovy编写webservice服务端和客户端(含连接数据并输出JSON数据)

    标题中的“groovy编写webservice服务端和客户端(含连接数据并输出JSON数据)”表明了本文将探讨如何使用Groovy编程语言来构建Web服务的服务器端和客户端,并且这些服务会涉及与数据库的交互以及JSON数据的处理。...

    24小时掌握Java编程(英文)

    - **RESTful Web Services简介**: RESTful架构风格的特点与优势。 - **构建RESTful服务**: 使用Java EE 7中的JSR 370(JAX-RS)规范开发RESTful Web服务。 - **客户端调用**: 如何通过客户端应用程序调用RESTful服务。...

    spring-framework-3.0.RELEASE

    4. **Groovy支持**:Spring 3.0增加了对Groovy的支持,允许开发者使用Groovy脚本进行配置,使得配置更加灵活和简洁。 5. **增强的AOP功能**:AOP在3.0版本中进行了扩展,包括更丰富的通知类型和更强大的切入点...

    spring3.0新特性官方ppt资料

    在3.0版本中,Spring AOP(面向切面编程)对AspectJ的支持进一步加强,包括编译时编织(CTW)和加载时编织(LTW)。这使得开发者可以更方便地使用AspectJ来定义和执行切面,提高代码的整洁度和可复用性。 5. **...

    软件架构的趋势

    动态语言如Python、Ruby等以其简洁性和灵活性受到欢迎,它们支持多种编程风格,如命令式、面向对象、函数式和面向切面编程,极大地提高了开发效率。尽管性能上可能不如静态编译语言,但其在快速原型开发和脚本编写上...

    Java JDK 6学习笔记——ppt简体版.rar

    1. **动态语言支持**:JDK 6引入了JSR 223(Scripting for the Java Platform),使得在Java中可以方便地使用脚本语言,如JavaScript、Groovy等。 2. **改进的Swing UI**:Swing组件得到了增强,例如JTable和JTree的...

    spring中文API 3.x 2.x版本

    3. **Groovy支持**:可以使用Groovy脚本作为配置语言,使配置更加简洁。 4. **改进的类型安全依赖注入**:使用泛型增强依赖注入,避免了类型转换错误。 5. **表达式语言(Spring EL)**:提供了强大的表达式语言,...

    Spring3.2处理板-Eclipse(mars)4.5 JAVA7

    3. 强大的MVC框架:Spring MVC 3.2增强了对RESTful风格的支持,以及对静态资源处理和模板引擎的改进,提升了Web应用的开发体验。 4. 配置简化:通过Java配置和@Configuration注解,可以更加直观地定义bean及其依赖...

    spring-framework-3.1.0.M1

    1. Groovy配置:Groovy配置让开发者可以使用更加自然的语言风格进行配置,减少了XML的繁琐,提高了开发效率。 2. @Profile注解:该注解允许开发者根据运行环境(如开发、测试、生产)动态地选择加载哪些配置,增强...

    spring-framework-3.1.0.M1-with-docs

    4. 集成了Groovy脚本支持:开发者可以通过Groovy来编写配置,增加了灵活性,降低了复杂性。 5. AOP改进:对通知(advisors)和切入点(pointcuts)的处理更加高效,同时增强了对环绕通知的支持。 6. 数据访问增强...

    Spring5.0.8RELEASE版本的pdf文档全部

    - **Groovy**:Spring支持使用Groovy作为配置语言,简化XML配置。 - **Kotlin集成**:Spring与Kotlin的良好兼容,提供了Kotlin的注解处理器和方言。 7. **数据访问模块(data-access.pdf)**: - **JDBC抽象层**...

    Spring-framework4.0

    15. **Groovy支持**:4.0版本增强了对Groovy的支持,允许开发者使用Groovy编写配置和脚本。 综上所述,Spring Framework 4.0是一次重要的更新,它不仅提升了性能,还引入了对现代编程语言和网络协议的支持,进一步...

    spring3.0 jar包和API文档

    8. **支持Groovy**:引入了对Groovy的支持,可以方便地创建Groovy-based的Bean定义和脚本。 **API文档** API文档是理解任何框架或库的关键资源,Spring 3.0的API文档通常包括以下内容: 1. **类和接口详解**:详尽...

    spring-framework-3.2.0.RELEASE

    在 Spring 3.2 版本中,主要的 jar 包可能包括 spring-core、spring-beans、spring-context、spring-aop、spring-web、spring-jdbc 等,这些组件分别负责基础服务、bean 管理、上下文支持、面向切面编程以及 Web ...

    spring3.2最全jar包

    1. **Spring核心**:Spring的核心组件包括IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)。IoC通过依赖注入来管理对象的生命周期和依赖关系,使代码更加灵活和解耦。AOP...

    编程网

    3. **Java EE**:Java Platform, Enterprise Edition(Java EE)提供了一系列企业级的开发框架和服务,如 JDBC(Java Database Connectivity)用于数据库访问,JMS(Java Message Service)用于消息传递,EJB...

    Spring Framework4.1.5

    在4.1.5版本中,配置元数据支持XML、Java注解和Groovy,使得应用程序的装配方式更加多样。Bean的生命周期管理也得到了加强,包括初始化回调、销毁回调以及自定义生命周期策略。 二、AOP(面向切面编程) Spring的...

    跟我学spring3(总共13章)7

    6. **支持Groovy脚本**:Spring 3.x引入了对Groovy的支持,可以使用Groovy编写配置和bean定义,增加了代码的灵活性。 7. **对JPA和JDBC的增强**:Spring 3.x加强了对Java Persistence API(JPA)和Java Database ...

Global site tag (gtag.js) - Google Analytics