便捷,轻巧的Groovy数据库操作

本文主要介绍Groovy对数据的CRUD操作,熟悉groovy.sql包,测试使用的数据库是H2。

1.数据库连接配置

//数据库连接配置defdb=[url:’jdbc:h2:mem:groovy’,user:’root’,password:’root’,driver:’org.h2.Driver’];

2.创建数据库连接,这里使用到Groovy的Sql类。

//创建数据库连接defsql=Sql.newInstance(db.url,db.user,db.password,db.driver);

3.创建数据库表

//创建数据库表sql.execute(”’CREATETABLEaccount(idintegerNOTNULL,namevarchar(20),urlvarchar(100))”’);

使用了groovy.sql.Sql类的execute方法执行一条SQL命令,在数据库groovy中创建了表account。

4.向数据库表中写入数据,并查询写入的数据

//写入数据defdatas=[[100,’Jack’,’http://www.jack.net’],[101,’Groovy’,’http://groovy.com’],[102,’Apache’,’http://apache.org’]];datas.each{param->sql.execute(‘INSERTINTOaccount(id,name,url)values(?,?,?)’,param);}println(‘InsertAfter:’);sql.eachRow(‘SELECTid,name,urlFROMaccount’){row->printf(‘|%d|%s|%s|\n’,row.id,row.name,row.url);}

从4中的程序可以看出,向表account中写入3条数据记录,然后查询并遍历出查询结果,再这一过程中使用了Groovy的闭包特性,列表数据结构。

下面是查询的结果:

InsertAfter:|100|Jack|||101|Groovy|||102|Apache||

5.查询数据

//查询第一行数据defrs=sql.firstRow(‘SELECT*FROMaccount’);println(‘QueryFirstRow:’);println(rs);

QueryFirstRow:[ID:100,NAME:ZhangSan,URL:]

6.更新数据

defname=’ZhangSan’;defurl=’http://aiilive.blog.51cto.com’;sql.executeUpdate(“UPDATEaccountSETname=$name,url=$urlwhereid=100”);println(‘UpdateAfter:’);sql.eachRow(‘SELECTid,name,urlFROMaccount’){row->printf(‘|%d|%s|%s|\n’,row.id,row.name,row.url);}

7.删除数据

//删除指定条件的数据;sql.executeUpdate(‘DELETEFROMaccountWHEREname=?’,[name]);;sql.execute(‘DELETEFROMaccountWHEREname=:name’,[‘name’:name]);println(‘DeleteAfter:’);sql.eachRow(‘SELECTid,name,urlFROMaccount’){row->printf(‘|%d|%s|%s|\n’,row.id,row.name,row.url);}

8.使用DataSet来处理数据

DataSet是Sql类的直接子类,用DataSet来操作数据库表更加有操作对象的样子。

defaccount=sql.dataSet(‘account’);account.add([id:103,name:’h2′,url:’http://h2.org’]);;url=’http://www.51cto.com’;account.add([id:104,name:name,url:url]);println(‘DataSetUpdateAfter’);account.eachRow(‘SELECTid,name,urlFROMaccount’){row->printf(‘|%d|%s|%s|\n’,row.id,row.name,row.url);};defaccountRows=account.rows();accountRows.each{row->printf(‘|%d|%s|%s|\n’,row.id,row.name,row.url);}

如上dataSet的参数account表示数据库中的表名。account是一个DataSet类型的对象,通过add方法想数据库表中添加一条记录,通过rows方法返回数据库表中的所有记录,如果rows方法添加参数则可以实现分页的功能。

上面通过groovy.sql包提供的API实现了数据库的基本操作,而该包中的类的其它更多的方法能够实现更丰富的操作。下面介绍数据库表和对象的映射操作以及集成Spring来操作数据库表。

数据库表和对象的映射操作:

1.准备工作

创建一个抽象的类SqlQuery

importgroovy.sql.*;abstractclassSqlQuery{defsql;defquery;defSqlQuery(sql,query){this.sql=sql;this.query=query;}defexecute(){defrowList=sql.rows(query);defresults=[];defsize=rowList.size();0.upto(size-1){index->results<<this.mapRow(rowList[index]);}returnresults;}defabstractmapRow(row);}创建一个Account类,其属性对应account表的字段classAccount{defid;defname;defurl;@OverridepublicStringtoString(){return”|$id|$name|$url|”;}}生命中,每一种苦难的背后都有一片晴朗的天空

便捷,轻巧的Groovy数据库操作

相关文章:

你感兴趣的文章:

标签云: