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 するか』
は、、、
自由だぁーーー♪(拳)
... じゃなくて、迷うなぁ。
個人的には、行数的にはほんの少し長くなるけど、後者の方が可読性が高いので好きですね。