DBFluteの検索メソッドをS2JDBCで書き直してみました

WEB+DB PRESS vol.41(P.85)に掲載したDBFluteで実装した検索メソッドを
S2JDBCで書き直してみました。


findEmpsメソッドはEMPテーブルに対して、
次の要求を満たすSELECT文を発行します。

  • DEPTテーブルとの結合
  • 日付の範囲検索
  • 文字列の先頭一致
  • 並べ替え


DBFlute

protected List<Emp> findEmps() {
		
    EmpCB cb = new EmpCB();		
    cb.setupSelect_Dept();		
    cb.query().setHireDate_DateFromTo(condFromHireDate, condToHireDate);		
    cb.query().setName_PrefixSearch(condEmpName);		
    cb.query().addOrderBy_Name_Asc();
		
    return empBhv.selectList(cb);		
}

※ コメントは省きました。


S2JDBC(S2.4.18-rc1)版

protected List<Emp> findEmps() {

    /* condToHireDate を +1日 する */
    if (condToHireDate != null) {
        condToHireDate.setTime(condToHireDate.getTime() + 86400000);
    }
		
    return jdbcManager.from(Emp.class)
            .join("dept")
            .where(new SimpleWhere()
                .ge("hireDate",	condFromHireDate)
                .lt("hireDate", condToHireDate)
                .starts("name", condEmpName))
            .orderBy("name asc")
            .getResultList();
}


ps. 「日付の範囲検索」はDBFluteの十八番なので、S2JDBCはやや不利だったかも。

      • -

追記:
「流れるようなインターフェース」で
『return 文から流すか』
それともぉ〜、
『流したものを宣言した変数で受けておいて最後にreturn するか』
は、、、
自由だぁーーー♪(拳)
... じゃなくて、迷うなぁ。
個人的には、行数的にはほんの少し長くなるけど、後者の方が可読性が高いので好きですね。