EzJDBCで「CASE演算子」始めました(^^)


以前「EzJDBC機能強化2」で書いていたCASE演算子をEzJDBCで実装しました。

一時はタイプセーフEnumを利用すればCASE演算子は不要なのではないかとも考えたのですが、以下の様なCASE演算子の場合はEnumで対応するのは面倒かなっと思い、CASE演算子はあった方が良いと考えを改めました。


下記の様なCASE文を含むSQLを例にEzJDBCでの実装方法を説明します。

SELECT *, CASE WHEN AGE >=20 THEN '成人' ELSE '未成年' END AS 項目名 FROM CUSTOMER CS

上記SQLをEzJDBCで実装すると以下の様になります。

// メインテーブル情報インスタンス
CUSTOMER CS = new CUSTOMER();
// CASEインスタンス生成
CASE case1 = CASE.when(CS.age.ge(20)).then("成人").else("未成年").as("項目名");
// 顧客テーブルを照会
List list = EzJDBC.selects(CS.All, case1).from(CS).find(Customer.class);

CASE#whenメソッドのネストに制限はありません。
CASE#as("項目名")メソッドは省略可能です。asメソッドが省略された場合は、CASE#whenメソッドで指定された項目名を利用します。