uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

流れるようにGEP3(Fluent GEP3)

流れるような(フルーエント)インタフェースは、Groovy 1.8の新規機能である「拡張コマンド式(GEP3)」と親和性が高いのではないかと思い、S2JDBCチュートリアルを参考にして、具体的には上に含まれるテストコードをGEP3でいくつか書きなおしてGroovyから呼び出してみました。

以下抜粋です。

results = jdbcManager.from Employee \
                      orderBy "name desc" resultList // SELECTの実行
results.each {
  println it.name
}

result = jdbcManager.from Address id 1 singleResult  // SELECTの実行

dep = jdbcManager.from Department \
                  leftOuterJoin employeeList() \
                  id 1 singleResult

emp = [name:'test',jobType:JobType.ANALYST,salary:300] as Employee
jdbcManager.insert emp execute(); // INSERTの実行

List<Employee> results =
      jdbcManager.from Employee leftOuterJoin "address" \
      where (new SimpleWhere().starts("name", "A").ends("address.name","1")) \
      resultList;

address1 = jdbcManager.from Address id 1 singleResult

流れたかな?
with(JdbcManager) { ... } を使えば、「jdbcManager.」も省略できるはずです。

Employee.classをEmployeeと書けるところは思わぬ良さです。