!!!スタンドアロンで使う
!!サンプル
{{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}}