CommonTools (V0.4.1b) | 2014-06-06 23:24 |
sormap (V0.4.0.0) | 2014-06-06 23:13 |
SorMapを使うに当たって必要なものは以下のとおりです。
なお、ValueObjectはテーブルと一対一に対応させる必要はありません。 SorMapはクエリの結果セットをJavaBeansにバインドするため、結果セットの戻り値(テーブルカラムのリスト/型)と 一致していればOKです。
SorMapを用いてO/Rマッピングを行うにはまずSQLXMLファイルを作成します。 以下にSQLXMLファイルのサンプルを示します。
query.xml
<?xml version="1.0" encoding="UTF-8"?> <statements> <!-- statement要素のtype属性は以下の6つ ・SELECT ・INSERT ・UPDATE ・DELETE ・OTHER ・CREATE ストアドプロシージャは現在未対応 --> <statement id="select" type="SELECT"><![CDATA[ SELECT seq , name , reg_date , description FROM TEST_TBL ]]></statement> <statement id="insert" type="INSERT"><![CDATA[ INSERT INTO TEST_TBL( seq , name , reg_date , description ) VALUES( 0/* seq */ , ''/* name */ , '1900-01-01'/* reg_date */ , ''/* description */ ) ]]></statement> <statement id="update" type="UPDATE"><![CDATA[ UPDATE TEST_TBL SET , name = ''/* name */ , reg_date = '1900-01-01'/* reg_date */ , description = , ''/* description */ WHERE seq = 0/* seq */ ]]></statement> <statement id="delete" type="DELETE"><![CDATA[ DELETE FROM TEST_TBL WHERE seq = 0/* seq */ ]]></statement> </statements>
次にSQLXMLインタフェースを作成します。 これは専用のアノテーションが付与された通常のJavaインタフェースです。
SampleInterface.java
JDBCQueryアノテーションのsqlxmlにはクラスパス上でのSQLXMLファイルの位置を記述します。
- package org.dyndns.nuda.sormap.sample;
- import java.util.List;
- import org.dyndns.nuda.mapper.annotation.JDBCQuery;
- @JDBCQuery(sqlxml = "org/dyndns/nuda/sormap/sample/query.xml")
- public interface SampleInterface {
- public List<TestSchemeBean> select();
- public void insert(List<TestSchemeBean> params);
- public void insert(TestSchemeBean param);
- public void update(List<TestSchemeBean> params);
- public void update(TestSchemeBean param);
- public void delete(List<TestSchemeBean> params);
- public void delete(TestSchemeBean param);
- }
上記SQLXMLインタフェースで用いるValueObject(上の例では"TestSchemeBean")を作成します TestSchemeBean.java
- package org.dyndns.nuda.sormap.sample;
- public class TestSchemeBean {
- private int seq;
- private String name;
- private java.util.Date reg_date;
- private String description;
- public int getSeq() {
- return this.seq;
- }
- public void setSeq(final int seq) {
- this.seq = seq;
- }
- public String getName() {
- return this.name;
- }
- public void setName(final String name) {
- this.name = name;
- }
- public java.util.Date getReg_date() {
- return this.reg_date;
- }
- public void setReg_date(final java.util.Date reg_date) {
- this.reg_date = reg_date;
- }
- public String getDescription() {
- return this.description;
- }
- public void setDescription(final String description) {
- this.description = description;
- }
- @Override
- public String toString() {
- return "TestSchemeBean [seq=" + this.seq + ", name=" + this.name
- + ", reg_date=" + this.reg_date + ", description="
- + this.description + "]";
- }
- }
※この例ではSQLXMLファイルに記述したクエリが通る想定で話をすすめています。 つまり、TEST_TBLはあらかじめ存在するとします
最後に、今までのステップで作成したリソースを使って実際にDBにクエリを発行してみます TestMain.java
- package org.dyndns.nuda.sormap.sample;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.util.List;
- import org.dyndns.nuda.mapper.JDBCQueryHandler;
- public class TestMain {
- /**
- * @param args
- * @throws Exception
- */
- public static void main(final String[] args) throws Exception {
- // JDBCコネクションを作成
- Connection con = DriverManager.getConnection("[Insert Connect String]");
- // SQLXMLインタフェースを生成
- // 第一引数:コネクションオブジェクト
- // 第二引数:SQLXMLインタフェースクラスオブジェクト
- SampleInterface intf = JDBCQueryHandler.getHandler(con,
- SampleInterface.class);
- /*
- * SampleInterfaceに付与されているJDBCQueryアノテーションは
- * sqlxml=org/dyndns/nuda/sormap/sample/query.xml
- * となっているため
- * このクラスのパッケージのquery.xmlにリンクする
- */
- // データベースから結果セットを取得
- List<TestSchemeBean> resultList = intf.select();
- // リスト0番目のnameフィールドを変更
- resultList.get(0).setName("change");
- // 結果をDBに反映(UPDATE)
- intf.update(resultList.get(0));
- // リストで一括修正することも可能
- intf.update(resultList);
- TestSchemeBean newBean = new TestSchemeBean();
- // 新しいレコードをINSERT
- intf.insert(newBean);
- // 上記レコードをDELETE
- intf.delete(newBean);
- /*
- * 注意:現状ではそれぞれのINSERT,UPDATE,DELETEごとに
- * コミットされてしまう。
- *
- * 次期バージョンで修正予定
- */
- }
- }
SourceForge.JP provides Wiki system to each project. You are able to edit pages as you like, of course you can also edit this page. Not only participating uses in the project, but also all of the SourceForge.JP users are able to edit this Wiki by default. You need to set up the authorization for the project.
You can find grammar and other documents on Sidebar links or Wiki guide (Japanese only) in SourceFroge.JP project.
CommonTools (V0.4.1b) | 2014-06-06 23:24 |
sormap (V0.4.0.0) | 2014-06-06 23:13 |