Groovy中的数据库操作(一)

如果学习过Java语言的JDBC开发数据库应用,就会知道开发一个简单的查询通常需要经过以下几个步骤:

1、用Class.forName加载JDBC驱动

2、DriverManager.getConnection得到一个数据库连接

3、创建Statement结构

4、执行查询语句

5、关闭查询结果、Statement结构及数据库连接

这些核心代码外,还需要捕捉ClassNotFound异常、SQL异常,关闭资源还需要在 finally 块中执行以确保资源一定会被关闭。

这些代码编写下来, 少说要二三十行了。

Groovy提供了对数据库的支持(groovy.sql包),通过一个查询所需要的代码和繁琐的Java中的操作比较一下:

通过代码比较,能看出来Groovy语言的目的就是让开发者专心进行功能的编写,无需为繁琐重复的底层劳神。

当然,上面这个示例想要运行起来,首先得有个数据库,示例中使用的是MariaDB(MySql的分支版本),其次,得有对应的JDBC驱动,并且对应的JDBC驱动的jar包要在类路径下以便创建连接的时候能够被加载。

在此顺便安利一下Docker,对于日常开发的支撑环境非常方便,现在Docker引擎也支持在Windows环境下安装了,具体可以从 https://store.docker.com/search?type=edition&offering=community 下载安装,引擎安装好以后,就会发现打开了一个新世界,各种支撑环境再不用繁琐的安装步骤了。

Docker这里不展开讲了,还是回来看数据库操作:

newInstance与withInstance

上述代码已经极大简化了数据库连接、释放的工作,但使用 newInstance 创建的方式,仍然需要使用显式语句进行关闭。如果想让Groovy自动关闭,可以使用 withInstance + 闭包的形式来使用:

一个方法加闭包完成操作,丝毫看不到打开资源、释放资源的痕迹:)

来看下Sql类中一些常用的方法:

query

query方法使用java.sql.ResultSet接口来操作数据,使用方法和Java中没有区别:

eachRow

本节第一个例子就使用来eachRow方法来进行查询,查询结果会被包装成 groovy.sql.GroovyResultSet 对象来使用。

firstRow

firstRow只返回数据集的一行数据(GroovyResultSet对象):

rows

rows方法返回一个GroovyRowResult的列表:

execute

execute几乎是一个通用的方法,insert、update、delete操作均可使用:

executeInsert

executeInsert 从语义上强调是Insert操作,并且与execute不同的是, executeInsert会返回一个列表, 包含插入数据对应的所有主键(仅限于数据库自动生成的主键,例如自增长主键)

executeUpdate

executeUpdate方法和executeInsert方法相同的用法,返回值是受影响的行数:

未完待续...

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180131G155MT00?refer=cp_1026

同媒体快讯

扫码关注云+社区