!!!スタンドアロンで使う !!サンプル {{ref s2jdbc_stand-alone_sample.zip}} !!ディレクトリ構成 [root] │ build.xml │ s2jdbc-gen-build.xml │ ├─conf │ app.dicon <- アプリケーションを構成するルートとなるdiconファイルです. │ convention.dicon <- アプリケーションのネーミング規約を定義するdiconファイルで,SMART deployを利用する場合に必要となります. │ jdbc.dicon <- JDBCデータソースを定義するdiconファイル │ s2jdbc.dicon <- jdbcManagerの定義等 │ ├─lib └─src !!設定ファイル !app.dicon !convention.dicon "" !s2jdbc.dicon 0 0 0 hsqlDialect !jdbc.dicon "org.hsqldb.jdbcDriver" "jdbc:hsqldb:file:hsql.db" "sa" "" 600 10 true !!エンティティ作成 !s2jdbc-gen-build.xml !エンティティ作成 ant -f s2jdbc-gen-build.xml !!コンパイル、実行 !テストソース Run.java {{code Java, package examples; import examples.entity.*; import java.util.*; import org.seasar.extension.jdbc.JdbcManager; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; import org.seasar.framework.container.SingletonS2Container; import org.seasar.framework.container.factory .S2ContainerFactory; import org.seasar.framework.container.S2Container; public class Run { public static void main(String[] args){ SingletonS2ContainerFactory.init(); RunTest test = SingletonS2Container.getComponent(RunTest.class); test.test(); } } }} RunTest.java {{code Java, package examples; import examples.entity.*; import java.util.*; import org.seasar.extension.jdbc.JdbcManager; import org.seasar.framework.container.factory.SingletonS2ContainerFactory; import org.seasar.framework.container.SingletonS2Container; import org.seasar.framework.container.factory .S2ContainerFactory; import org.seasar.framework.container.S2Container; public class RunTest { public JdbcManager jdbcManager; public void test(){ System.out.println(jdbcManager); Test data = new Test(); data.test = "hoge"; data.test2 = "hoge2"; jdbcManager.insert(data).execute(); List results = jdbcManager .selectBySql( Test.class, "select * from test") .getResultList(); for(Test result: results){ System.out.println(result); } } } }} !build.xml !コンパイルと実行 ant run !!Unitテスト S2Unitを使う。 !サンプル {{code Java, package examples; import org.seasar.extension.unit.S2TestCase; import org.seasar.framework.aop.interceptors.MockInterceptor; import org.seasar.extension.jdbc.JdbcManager; import org.seasar.extension.dataset.impl.DataSetImpl; import org.seasar.extension.dataset.DataSet; import examples.entity.*; import java.util.*; public class test01 extends S2TestCase { public JdbcManager jdbcManager; protected void setUp() throws Exception { include("app.dicon"); } public void testHoge(){ // DataSet before = new DataSetImpl(); // before.addTable("Test"); readXlsAllReplaceDb("testdata01.xls"); DataSet expect = readXls("testdata02.xls"); Test t = new Test(); t.test = "hoge"; t.test2 = "hogehoge"; jdbcManager.insert(t).execute(); // 比較したくない項目は、xlsに書かなければ比較されない assertEquals(expect, readDb(expect)); } } }} IDとか実行日時などの項目でテストの対象から除外したいカラムがある場合は、 xlsファイルの項目から削除しておくと、比較対象にならない。 参考:http://ameblo.jp/kazuya232323/entry-11227861408.html !!!Strutsで使う !!設定 !classes/app.dicon を有効にする。 !classes/s2jdbc.dicon のダイアレクトを自分のDBに合わせる。 例えば、Oracleの場合は oracleDialect !classes/jdbc.dicon 自分のDBに合わせて xaDataSource connectionPool DataSource を有効にする。 !!エンティティを使わない List results = jdbcManager .selectBySql( BeanMap.class, "select * from test") .getResultList(); でエンティティを使わずにデータを取得できる。 !!エンティティを使う !準備 S2JDBC-Gen を使ってエンティティを生成する。 +S2JDBC-Gen をダウンロードして解凍 +s2jdbc-gen/resources/s2jdbc-gen-build.xml を編集 + ant -f s2jdbc-gen-build.xml gen-entity !エンティティを使う List results = jdbcManager .from(hogehoge.entity.Test.class) .where("id = ?", 1) .getResultList(); !!複数のDBへ接続する http://ymotoba.blogspot.jp/2008/10/s2jdbcdb.html !作成するファイル jdbca.dicon jdbcb.dicon s2jdbca.dicon s2jdbcb.dicon !s2jdbc.dicon まずは、デフォルトで用意されているs2jdbc.diconを以下のように編集 !s2jdbca.dicon 0 0 0 mysqlDialect DataSource !s2jdbcb.dicon 0 0 0 mysqlDialect DataSource !jdbca.dicon "org.h2.Driver" "jdbc:h2:tcp://localhost:8082/test" "sa" "" @org.seasar.framework.util.DriverManagerUtil@deregisterAllDrivers() 600 10 true !jdbcb.dicon "com.mysql.jdbc.Driver" "jdbc:mysql://localhost:3306/clontalk03?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull" "root" "" 600 10 true !JdbcManager 上記設定が完了すれば。 下記のように@BindingでインジェクションしたいJdbcManagerを選択すればオッケー! @Binding("jdbcManagerA") private JdbcManager h2JdbcManager; @Binding("jdbcManagerB") private JdbcManager mySqlJdbcManagerB; {{category2 プログラミング言語,Servlet & Struts}}