基本的な使い方(V0.3.0以前) <トップへ戻る>

SorMapを使うに当たって必要なものは以下のとおりです。

  • データベースのテーブル
  • SQLXMLファイル
  • SQLXMLインタフェース
  • テーブルのデータを格納するためのValueObject(JavaBeans)

なお、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

  1. package org.dyndns.nuda.sormap.sample;
  2. import java.util.List;
  3. import org.dyndns.nuda.mapper.annotation.JDBCQuery;
  4. @JDBCQuery(sqlxml = "org/dyndns/nuda/sormap/sample/query.xml")
  5. public interface SampleInterface {
  6. public List<TestSchemeBean> select();
  7. public void insert(List<TestSchemeBean> params);
  8. public void insert(TestSchemeBean param);
  9. public void update(List<TestSchemeBean> params);
  10. public void update(TestSchemeBean param);
  11. public void delete(List<TestSchemeBean> params);
  12. public void delete(TestSchemeBean param);
  13. }
JDBCQueryアノテーションのsqlxmlにはクラスパス上でのSQLXMLファイルの位置を記述します。

上記SQLXMLインタフェースで用いるValueObject(上の例では"TestSchemeBean")を作成します TestSchemeBean.java

  1. package org.dyndns.nuda.sormap.sample;
  2. public class TestSchemeBean {
  3. private int seq;
  4. private String name;
  5. private java.util.Date reg_date;
  6. private String description;
  7. public int getSeq() {
  8. return this.seq;
  9. }
  10. public void setSeq(final int seq) {
  11. this.seq = seq;
  12. }
  13. public String getName() {
  14. return this.name;
  15. }
  16. public void setName(final String name) {
  17. this.name = name;
  18. }
  19. public java.util.Date getReg_date() {
  20. return this.reg_date;
  21. }
  22. public void setReg_date(final java.util.Date reg_date) {
  23. this.reg_date = reg_date;
  24. }
  25. public String getDescription() {
  26. return this.description;
  27. }
  28. public void setDescription(final String description) {
  29. this.description = description;
  30. }
  31. @Override
  32. public String toString() {
  33. return "TestSchemeBean [seq=" + this.seq + ", name=" + this.name
  34. + ", reg_date=" + this.reg_date + ", description="
  35. + this.description + "]";
  36. }
  37. }

※この例ではSQLXMLファイルに記述したクエリが通る想定で話をすすめています。  つまり、TEST_TBLはあらかじめ存在するとします

最後に、今までのステップで作成したリソースを使って実際にDBにクエリを発行してみます TestMain.java

  1. package org.dyndns.nuda.sormap.sample;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.util.List;
  5. import org.dyndns.nuda.mapper.JDBCQueryHandler;
  6. public class TestMain {
  7. /**
  8. * @param args
  9. * @throws Exception
  10. */
  11. public static void main(final String[] args) throws Exception {
  12. // JDBCコネクションを作成
  13. Connection con = DriverManager.getConnection("[Insert Connect String]");
  14. // SQLXMLインタフェースを生成
  15. // 第一引数:コネクションオブジェクト
  16. // 第二引数:SQLXMLインタフェースクラスオブジェクト
  17. SampleInterface intf = JDBCQueryHandler.getHandler(con,
  18. SampleInterface.class);
  19. /*
  20. * SampleInterfaceに付与されているJDBCQueryアノテーションは
  21. * sqlxml=org/dyndns/nuda/sormap/sample/query.xml
  22. * となっているため
  23. * このクラスのパッケージのquery.xmlにリンクする
  24. */
  25. // データベースから結果セットを取得
  26. List<TestSchemeBean> resultList = intf.select();
  27. // リスト0番目のnameフィールドを変更
  28. resultList.get(0).setName("change");
  29. // 結果をDBに反映(UPDATE)
  30. intf.update(resultList.get(0));
  31. // リストで一括修正することも可能
  32. intf.update(resultList);
  33. TestSchemeBean newBean = new TestSchemeBean();
  34. // 新しいレコードをINSERT
  35. intf.insert(newBean);
  36. // 上記レコードをDELETE
  37. intf.delete(newBean);
  38. /*
  39. * 注意:現状ではそれぞれのINSERT,UPDATE,DELETEごとに
  40. * コミットされてしまう。
  41. *
  42. * 次期バージョンで修正予定
  43. */
  44. }
  45. }

Welcome to our Project Wiki

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

Recent Tickets

セーブポイント対応2013-09-28 09:26
 JDBCConnectionのセーブポイントの機能を扱えるように  機能を拡充 nkoseki
ロギング機能の追加2013-09-28 09:25
SorMap内部で発生したコンテキスト情報を、外部出力するための機能を実装する。 ロガーはCommonToolsのLoggerAdaptorを用い...nkoseki
包括的単体テストの実施2013-09-28 09:24
現在公開中のバージョンまでの、ガッチリとした単体テストを実施する。 また、単体テスト結果と単体テスト用リリースを公開するnkoseki