EzJDBCで取得列名を変更する方法。
EzJDBCでは、照会結果を格納するクラスは以下の2通り存在ます。
1.テーブルに対応したEntity(pluginにより自動生成される)
2.開発者によって作成されたBean
1.の場合はテーブル列名とEntityのプロパティ名(テーブル列名のキャメル記法)が一致しますが、2の場合は必ずしもテーブル列名とBeanのプロパティ名が一致するとは限りません。
その様な時のためにEzJDBCでは取得項目に別名をつける機能があります。
記述方法は以下の通りです。
CUSTOMERテーブルの列名
ID,NAME,GENDER,AGE,ADDRESS...CREATED,VERSION
照会結果を格納する開発者が作成したCustomer2.java
public class Customer2 {
/** CUSTOMERのID */
public int id;
/** CUSTOMERのNAME */
public String customerName; // テーブル列名とプロパティ名が異なる
/** CUSTOMERのGENDER */
public String gender
/** CUSTOMERのVERSION */
public long version;
}
CUSTOMERテーブルを照会し、結果を「Customer2.class」に格納するコード
この時CUSTOMERテーブルのNAMEの値をCustomer2のcustomerNameプロパティにマッピングさせる方法は下記の通りです。
// メインテーブル情報インスタンス生成
CUSTOMER CUS =new CUSTOMER();
// CUSTOMERテーブルを照会
Listlist = EzJDBC.from(CUS)
.addField(CUS.name.as("CUSTOMER_NAME"))
.where(CUS.name.like("%YOSHI%"))
.find(Customer2.class);
上記コードによって自動生成されるSQLは下記の通りです。
SELECT
CUS.ID,
CUS.NAME as customerName,
CUS.GENDER,
CUS.VERSION
FROM
CUSTOMER CUS
WHERE
CUS.NAME LIKE '%YOSHI%'
これで、Customer2のcustomerNameプロパティにCUSTOMERテーブルのNAMEの値がマッピングされます。。。
[追記]
こういう時にこそアノテーションの出番なのかなぁ(・・?