パッケージ nga.sql

SQL文だけで O-R マッピングを行なう超シンプルなパーシステンスライブラリ。

参照先:
          説明

インタフェースの概要
Caller ストアドプロシージャ・ストアドファンクション実行用 SQL オブジェクト。
Selecter<R> Select 文用 SQL オブジェクト。
Updater Update / Insert / Delete 用 SQL オブジェクト。
 

クラスの概要
SQL SQL オブジェクト作成用ファクトリクラス。
 

例外の概要
DuplicatedException 重複登録や整合性制約違反時に発生する例外。
 

パッケージ nga.sql の説明

SQL文だけで O-R マッピングを行なう超シンプルなパーシステンスライブラリ。

こんな人におすすめです。

SELECT の使用例

SELECT は SQL.createSelecter メソッドで取得した,Selecterfind メソッドを呼び出して実行する。

// 検索を実行して,リストに格納する。 List<Item> 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<Item> 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 メソッドで取得した,Updaterexecute メソッドを呼び出して実行する。

// パラメタ設定を行なう。 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<Item> 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 メソッドで取得した,Callerexecute メソッドを呼び出して実行する。

// パラメタ設定を行なう。 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 パラメタを指定する場合は @#...@ と記述する。