2013年10月10日木曜日

groovyとApache MetaModelでRDBのテーブルに対してクエリーを実行する

groovyとApache MetaModelでRDBのテーブルに対してクエリーを実行するには、以下のようなコードを実行します。
@GrabConfig(systemClassLoader=true)
@Grab(group='postgresql', module='postgresql', version='9.1-901.jdbc4')
@Grab(group='org.eobjects.metamodel', module='MetaModel-full', version='3.4.5')
import org.eobjects.metamodel.*
import groovy.sql.Sql

def sql = Sql.newInstance(
  "jdbc:postgresql://localhost:5432/userdb",
  "postgres",
  "postgres",
  "org.postgresql.Driver")

dc = DataContextFactory.createJdbcDataContext(sql.getConnection())
// テーブル(=シート)を指定
table = dc.getDefaultSchema().getTableByName("customer")

// 顧客IDが1011のデータを抽出
query = dc.query().from(table)
  .select("customer_id", "customer_name")
  .where(table.getColumnByName("customer_id")).eq(1011).toQuery()
// Queryの表示
println query.toString()
// Queryの実行
ds = dc.executeQuery(query)
for(row in ds){
  // 顧客IDと顧客名を表示
  println row.getValue(0) + ":" + row.getValue(1)
}


動作環境
groovy 2.1.7, JDK7 update40

0 件のコメント:

コメントを投稿