今天繼續跟大家分享如何利用groovy語法進行create table schema及Insert語法介紹,Groovy在與資料庫互動是用execute方法,execute方法有很多種實作方式,個人認為還蠻flexible的,以下就開始介紹。
Groovy中要執行SQL語法都是透過execute這個方法,新增Table語法與資料庫的DDL有關,沒什麼需要提的,新增資料的方式就有至少三種:
1.標準SQL
2.用List傳遞欲新增的資料
3.將資料先行儲存於map,再用closure批次新增
範例如下:
import groovy.sql.Sql
def db=Sql.newInstance("jdbc:mysql://localhost/goo",
"root",
"lga2011",
"com.mysql.jdbc.Driver")
//新增Table,這是MySQL DDL(廢話)
db.execute('''
CREATE TABLE IF NOT EXISTS OpenItem(
id INTEGER PRIMARY KEY AUTO_INCREMENT,
sourceNo VARCHAR(100),
designDoc VARCHAR(50),
receviedDate Date,
closeDate Date);
''')
//標準新增一筆資料
db.execute(''' INSERT INTO openitem (sourceNo, designDoc, receviedDate, closeDate)
VALUES ('FPR-12-0458', 'FDDR LT1-06987', '2012-05-07', '2012-06-25')
''')
//可先定義insert SQL,類似Java中的preparedStatement,未知參數用?代表
def itemInsert='''INSERT INTO openitem (sourceNo, designDoc, receviedDate, closeDate)
VALUES (?,?,?,?);'''
//以List的型式insert資料
db.execute (itemInsert, ['FPR-13-0145','FDDR LT1-13254', '2013-05-03', '2013-06-05'])
//事先將資料以map儲存
def someItems=[
[sourceNo:'FPR-10-0710',designDoc:'FDDR LT1-08795',receviedDate:'2010-09-05', closeDate:'2010-10-23'],
[sourceNo:'FPR-09-0285',designDoc:'FDDR LT1-04685',receviedDate:'2009-04-02', closeDate:'2009-06-02'],
[sourceNo:'FPR-11-0089',designDoc:'FDDR LT1-09445',receviedDate:'2011-01-28', closeDate:'2011-03-30']
]
//利用Closure批次新增資料
someItems.each{ openitem-> //利用GString將變數帶入
db.execute(""" INSERT INTO openitem (sourceNo, designDoc, receviedDate, closeDate)
VALUES (${openitem.sourceNo},${openitem.designDoc},
${openitem.receviedDate},${openitem.closeDate})
""");
}
Database結果截圖:
Table Schema
新增資料結果
明天再繼續介紹update/delete或是query,因為query通常要花比較多時間,要看看明天時間夠不夠