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

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

SELECT の使用例

SELECT は {@link nga.sql.SQL#createSelecter SQL.createSelecter} メソッドで取得した,{@link nga.sql.Selecter Selecter} の {@link nga.sql.Selecter#find find} メソッドを呼び出して実行する。

// 検索を実行して,リストに格納する。 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 は {@link nga.sql.SQL#createUpdater SQL.createUpdater} メソッドで取得した,{@link nga.sql.Updater Updater} の {@link nga.sql.Updater#execute 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<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);

ストアドプロシージャ・ストアドファンクションの呼び出し

ストアドプロシージャ・ストアドファンクションの呼び出しには {@link nga.sql.SQL#createCaller SQL.createCaller} メソッドで取得した,{@link nga.sql.Caller Caller} の {@link nga.sql.Caller#execute 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 パラメタを指定する場合は @#...@ と記述する。