iT邦幫忙

DAY 10
1

邊看邊學Groovy/Grails/Gradle系列 第 7

Groovy基本語法(4)-Groovy JDBC語法(2)-Create Table及Insert語法

今天繼續跟大家分享如何利用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結果截圖:

  1. Table Schema

  2. 新增資料結果

明天再繼續介紹update/delete或是query,因為query通常要花比較多時間,要看看明天時間夠不夠


上一篇
Groovy基本語法(4)-Groovy JDBC語法(1)以MySQL為例
下一篇
Groovy基本語法(4)-Groovy JDBC語法(3)-update/delete及query/rows語法
系列文
邊看邊學Groovy/Grails/Gradle27

尚未有邦友留言

立即登入留言