이 글은 http://www.ibm.com/developerworks/java/library/j-pg01115.html?S_TACT=105AGX02&S_CMP=EDU 를 정리한 문서입니다.

설명#

jar파일 설정하기#

Linux에 groovy를 rpm으로 설치하면 /usr/share/groovy 에 설치가 됩니다. 여기서 conf/groovy-starter.conf 파일을 열어보면 jar파일들의 위치를 알수가 있습니다.
## See http://groovy.codehaus.org/api/org/codehaus/groovy/tools/LoaderConfiguration.html
## for the file format

    # load required libraries
    load !{groovy.home}/lib/*.jar

    # load user specific libraries
    load !{user.home}/.groovy/lib/*.jar

    # tools.jar for ant tasks
    load ${tools.jar}

groovy 자체가 혹은 공통으로 사용할 jar파일은 {groovy.home}/lib 아래 두시면 되고 사용자별로 할때는 {user.home}/.groovy/lib 아래 두시면 됩니다. 일반 사용자가 한번 이상 groovy애플리케이션을 실행하면 .groovy가 생성이 되는데 그 아래 lib는 수동으로 만들어주셔야 합니다.

기본 메서드#

  1. eachRow : 데이터를 조회하는 경우 사용
  2. execute : CRUD 모두 처리, 리턴값은 boolean타입
  3. executeUpdate : 입력, 수정, 삭제의 경우 사용, 리턴값은 처리된 데이터의 갯수

DataSet 관련 메서드#

groovy의 DataSet은 데이터베이스 테이블을 표현하는 객체이다.
  • 쿼리문없이 CRUD작업이 간단하게 이루어진다.
  • 한개의 테이블에 대해서만 매핑이 된다는 제한점이 있다.

샘플#

가장 기본적인 데이터 조회#

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(args) {
    def sql = groovy.sql.Sql.newInstance("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111", "com.mysql.jdbc.Driver")
    sql.eachRow("select * from test"){ println it.id + " " + it.name }
  }
}

간단한 insert구문 처리#

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(args) {
    def sql = Sql.newInstance("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111", "com.mysql.jdbc.Driver")

    def id = 3
    def name = "test3"
    sql.execute("insert into test values(${id}, ${name})")
  }
}

PreparedStatement를 이용한 데이터 조회#

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(args) {
    def sql = groovy.sql.Sql.newInstance("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111", "com.mysql.jdbc.Driver")
    sql.eachRow("select * from test where id=?", [2]){ println it.id + " " + it.name }
  }
}

PreparedStatement를 이용한 데이터 입력#

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(args) {
    def sql = Sql.newInstance("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111", "com.mysql.jdbc.Driver")

    sql.executeUpdate("insert into test values(?, ?)", [4, 'test4']);
  }
}

DataSet을 이용한 데이터 조회와 입력#

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(args) {
    def sql = Sql.newInstance("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111", "com.mysql.jdbc.Driver")

    // test 라는 테이블의 데이터를 모두 가져온다.
    def tests = sql.dataSet("test")
    tests.each{
        println it.id+" "+it.name
    }
    // test 테이블에 데이터를 입력한다.
    tests.add(id:5, name:"test5")
  }
}

DataSet을 이용한 데이터 조회시 조건을 추가한 형태#

import groovy.sql.Sql
class GroovySqlExample1{
  static void main(args) {
    def sql = Sql.newInstance("jdbc:mysql://127.0.0.1:3306/test", "fromm0", "1111", "com.mysql.jdbc.Driver")

    // test 라는 테이블의 데이터를 모두 가져온다.
    def tests = sql.dataSet("test")
    def x = tests.rows()
    // 데이터의 범위를 지정한다.
    x = x.findAll{ it.id > 2 }
    x.each{
        println it.id+" "+it.name
    }
  }
}

MySQL 상태를 리포팅하기#

import groovy.sql.Sql
class DBStatusReport{
  static void main(args) {
    def sql = Sql.newInstance("jdbc:mysql://127.0.0.1/test", "fromm0", "1111", "com.mysql.jdbc.Driver")
    def uptime, questions
    sql.eachRow("show status"){
        if(it.variable_name == "Uptime"){
            uptime =  it[1]
        }else if (it.variable_name == "Questions"){
            questions =  it[1]
        }
    }

    println "Uptime for Database: " + uptime
    println "Number of Queries: " + questions
    println "Queries per Minute = " + Integer.valueOf(questions) / Integer.valueOf(uptime)

    def insertnum, selectnum, updatenum
    sql.eachRow("show status like 'Com_%'"){
        if(it.variable_name == "Com_insert"){
            insertnum =  Integer.valueOf(it[1])
        }else if (it.variable_name == "Com_select"){
            selectnum =  Integer.valueOf(it[1])
        }else if (it.variable_name == "Com_update"){
            updatenum =  Integer.valueOf(it[1])
        }
    }
    println "% Queries Inserts = " + 100 * (insertnum / Integer.valueOf(uptime))
    println "% Queries Selects = " + 100 * (selectnum / Integer.valueOf(uptime))
    println "% Queries Updates = " + 100 * (updatenum / Integer.valueOf(uptime))
    }
}

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-8) was last changed on 21-Dec-2008 16:49 by DongGukLee