2013年10月19日土曜日

groovyとApache MetaModelでクエリーのソートを使用する

groovyとApache MetaModelでクエリーのソートを使用するには、以下のコードのようにorderByを使用します。
@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")

dc1 = DataContextFactory.createJdbcDataContext(sql.getConnection())

// スコアテーブルの取得とカラムの取得
tableScores = dc1.getDefaultSchema().getTableByName("scores")
colScoresTestId = tableScores.getColumnByName("test_id") // テストID
colScoresStudentId = tableScores.getColumnByName("student_id") // 生徒ID
colScoresScore = tableScores.getColumnByName("score")  // 点数

// 数学のテストのスコアを降順にソートする
query = dc1.query().from(tableScores)
  .select(colScoresStudentId, colScoresScore)
  .where(colScoresTestId).eq("mathematics")
  .orderBy(colScoresScore).desc()
  .toQuery()

// Queryの表示
println query.toString()
// Queryの実行
ds = dc1.executeQuery(query)
for(row in ds){
  // student_id, 点数を表示
  println row.getValue(0) + ":" + row.getValue(1)
}

0 件のコメント:

コメントを投稿