DAOのインターフェース

DAOの動的な実装についてのアイデアメモ。

検索


Foo[] selectFoo(int id, String bar);
List selectFoo(int id, String bar);
Foo selectRowFoo(int id, String bar);
以下のSQLを生成。

SELECT * FROM FOO WHERE ID = ? AND BAR = ?

  • テーブル名は定数アノテーション
  • 検索条件のカラム名は仮引数名を取得。
  • 1件か複数件かは「select」「selectRow」で判別。

更新


int updateFoo(int id, String bar, SET set);
使うときは

updateFoo(10, "baz", new SET() {
String hoge = "ちょwww";
String hogehoge = "おまwww";
});
以下のSQLを生成。

UPDATE FOO SET HOGE = ?, HOGEHOGE = ? WHERE ID = ? AND BAR = ?

削除


int deleteFoo(int id, String bar);
以下のSQLを生成。

DELETE FROM FOO WHERE ID = ? AND BAR = ?

挿入


int insertFoo(Foo foo);
int insertFoo(List foos);
int insertFoo(Foo[] foos);
以下のSQLを生成。

INSERT INTO FOO (X, Y, ...) VALUES (?, ?, ...)

  • テーブル名は定数アノテーション
  • 1件か複数件かは引数の型で判別。
  • INSERT文の生成はJavaBeanから。

その他

  • 検索の1件/複数件は戻り値の型で判別すればいいかなぁ…?
  • 無名クラスに変数を渡すようになると記述がごちゃごちするかも。
  • JavaBeanのインタフェース使って、更新対象のカラムを指定することはできるかも。