DAOの動的な実装についてのアイデアメモ。
検索
以下のSQLを生成。
Foo[] selectFoo(int id, String bar);
List selectFoo(int id, String bar);
Foo selectRowFoo(int id, String bar);
SELECT * FROM FOO WHERE ID = ? AND BAR = ?
更新
使うときは
int updateFoo(int id, String bar, SET set);
以下のSQLを生成。
updateFoo(10, "baz", new SET() {
String hoge = "ちょwww";
String hogehoge = "おまwww";
});
UPDATE FOO SET HOGE = ?, HOGEHOGE = ? WHERE ID = ? AND BAR = ?
挿入
以下のSQLを生成。
int insertFoo(Foo foo);
int insertFoo(List foos);
int insertFoo(Foo[] foos);
INSERT INTO FOO (X, Y, ...) VALUES (?, ?, ...)
- テーブル名は定数アノテーション。
- 1件か複数件かは引数の型で判別。
- INSERT文の生成はJavaBeanから。
その他
- 検索の1件/複数件は戻り値の型で判別すればいいかなぁ…?
- 無名クラスに変数を渡すようになると記述がごちゃごちするかも。
- JavaBeanのインタフェース使って、更新対象のカラムを指定することはできるかも。