2013年10月13日日曜日

groovyとApache MetaModelでPOJOのリストに対してクエリーを実行する

groovyとApache MetaModelでPOJOのリストに対してクエリーを実行するには、以下のようにObjectTableDataProviderクラスとPojoDataContextクラスを使用します。
@Grab(group='org.eobjects.metamodel', module='MetaModel-full', version='3.4.5')
import org.eobjects.metamodel.*
import org.eobjects.metamodel.pojo.*

class ComputerLang
{
  // 言語ID
  int langID
  // 言語名称
  String name
}

languages = [
  new ComputerLang(langID:1, name:"C"),
  new ComputerLang(langID:2, name:"java"),
  new ComputerLang(langID:3, name:"groovy")
]

providerComputerLang = new ObjectTableDataProvider<ComputerLang>(
  "languages", ComputerLang.class, languages
)
dc = new PojoDataContext([providerComputerLang])
table = dc.getDefaultSchema().getTable(0)
// 言語IDが3の言語を抽出
query = dc.query().from(table)
  .select("langID", "name")
  .where(table.getColumnByName("langID")).equals(3).toQuery()
// Queryの表示
println query.toString()
// Queryの実行
ds = dc.executeQuery(query)
for(row in ds){
  // LangIDと言語を表示
  println row.getValue(0) + ":" + row.getValue(1)
}


動作環境
groovy 2.1.7, JDK7 update40

0 件のコメント:

コメントを投稿