パッケージ nga.sql
SQL文だけで O-R マッピングを行なう超シンプルなパーシステンスライブラリ。
参照先:
説明
インタフェースの概要 |
Caller |
ストアドプロシージャ・ストアドファンクション実行用 SQL オブジェクト。 |
Selecter<R> |
Select 文用 SQL オブジェクト。 |
Updater |
Update / Insert / Delete 用 SQL オブジェクト。 |
クラスの概要 |
SQL |
SQL オブジェクト作成用ファクトリクラス。 |
パッケージ nga.sql の説明
SQL文だけで O-R マッピングを行なう超シンプルなパーシステンスライブラリ。
こんな人におすすめです。
- SQL文は書きたいけれど,Statement の setXXX メソッドや,ResultSet の getXXX メソッドをいちいち書くのは面倒だと思っている人。
- SQL文を書くのは苦にならないけど,設定ファイルでいちいちマッピング設定するのは面倒くさい,と思っている人。
SELECT の使用例
SELECT は SQL.createSelecter
メソッドで取得した,Selecter
の find
メソッドを呼び出して実行する。
// 検索を実行して,リストに格納する。
List- itemList =
SQL.createSelecter(
connection, // データベースコネクション
Item.class, // 検索結果格納クラス
"SELECT"+
" ITEM_CD AS code, ITEM_NM AS name"+
" FROM ITEM"+
" WHERE ITEM_NM = @0@"+
" OR ITEM_CD = @1@", // SQL
"apple","2" // パラメタ
).find();
// 検索結果を出力する。
for(Item item : itemList) {
System.out.format("%s, %s%n", item.getCode(), item.getName());
}
select する列を Value オブジェクトにマッピングするためには「AS プロパティ名」というふうに別名で select を行なう。
検索条件は,@0@, @1@, @2@ ... で渡すことができる。
あるいは,Value オブジェクトに格納されたプロパティを検索条件として渡すことも可能。この場合は,下記のように @code@, @name@ ... と記述する。
// Value オブジェクトにパラメタ設定を行なう。
Item parameter = new Item();
parameter.setName("apple");
parameter.setCode("2");
// 検索を実行して,リストに格納する。
List- itemList =
SQL.createSelecter(
connection, // データベースコネクション
Item.class, // 検索結果格納クラス
"SELECT"+
" ITEM_CD AS code, ITEM_NM AS name"+
" FROM ITEM"+
" WHERE ITEM_NM = @name@"+
" OR ITEM_CD = @code@", // SQL
parameter // パラメタ
).find();
// 検索結果を出力する。
for(Item item : itemList) {
System.out.format("%s, %s%n", item.getCode(), item.getName());
}
LIKE の使用
LIKE を使って前方一致検索等を実行したい場合は,@...@ の中に % 記号を書く。
例えば,ITEM_CD LIKE @code%@
とすれば,前方一致検索,ITEM_CD LIKE @%code@
とすれば後方一致検索となる。
INSERT / UPDATE / DELETE の使用例
INSERT / UPDATE / DELETE は SQL.createUpdater
メソッドで取得した,Updater
の execute
メソッドを呼び出して実行する。
// パラメタ設定を行なう。
Item parameter = new Item();
parameter.setName("grape");
parameter.setCode("4");
// INSERT を実行
SQL.createUpdater(
connection,
"INSERT INTO ITEM (ITEM_CD, ITEM_NM) VALUES(@code@, @name@)"
).execute(parameter);
// UPDATE を実行
SQL.createUpdater(
connection,
"UPDATE ITEM SET ITEM_NM=@name@ WHERE ITEM_CD = @code@"
).execute(parameter);
// DELETE を実行
SQL.createUpdater(
connection,
"DELETE FROM ITEM WHERE ITEM_CD = @code@"
).execute(parameter);
execute メソッドの引数に,java.util.List を渡すと複数のデータに対する操作を一括で実行することができる。
// ITEM テーブルの全レコードを List に取得する。
List- itemList =
SQL.createSelecter(
connection,Item.class,
"SELECT ITEM_CD AS code, ITEM_NM AS name FROM ITEM"
).find();
// List の内容を ITEM2 テーブルに INSERT する。
SQL.createUpdater(
connection,
"INSERT INTO ITEM2 (ITEM_CD, ITEM_NM) VALUES(@code@, @name@)"
).execute(itemList);
ストアドプロシージャ・ストアドファンクションの呼び出し
ストアドプロシージャ・ストアドファンクションの呼び出しには SQL.createCaller
メソッドで取得した,Caller
の execute
メソッドを呼び出して実行する。
// パラメタ設定を行なう。
Item parameter = new Item();
parameter.setCode("1234");
SQL.createCaller(
connection,
"{ @!code@ = call substr(@code@, 1, 2)}"
).execute(parameter);
out パラメタを指定する場合,@!...@ と記述する。
上記の例では,substr ファンクションの戻り値格納変数として @!code@
を指定している。このSQLが実行されると,parameter オブジェクトの code プロパティに substr の結果が格納される。
なお,inout パラメタを指定する場合は @#...@ と記述する。