今回、基本的なDAOの作成方法を記述したいと思います。
iBatis DAOフレームワークでは、DAOを作成する場合、
- インターフェース
- 実装クラス
を作成します。これは、DAOフレームワークに限った事ではなく
通常のクラス設計でも同じことですが。
DAOフレームワークには、DAO設定ファイルにて、定義したcontextの
transactionMangerに対応するテンプレートクラスが定義されています。
実装クラスは、定義したtransactionMangerに対応するテンプレートクラスを
継承し、さらに自分で定義したインターフェースを実装する形になります。
今回の例でいうと、前回定義したcontextでは、transactionManagerをSQLMAPと
しましたので、対応するテンプレートクラスは、
- com.ibatis.dao.client.template.SqlMapDaoTemplate
となります。このテンプレートクラスからは、SqlMapExecutorが取得できたり、
queryForListなどのショートカットメソッドが用意されています。
今回使用するDDLです。
-- vim:set ts=4 sw=4 et ws is nowrap ft=sql: -- -- DDL -- CREATE TABLE SAMPLE012_TEST_TABLE( id int auto_increment ,value varchar(10) not null ,primary key(id) ); -- -- サンプルデータ -- insert into SAMPLE012_TEST_TABLE (value) values ('value-01'); insert into SAMPLE012_TEST_TABLE (value) values ('value-02'); insert into SAMPLE012_TEST_TABLE (value) values ('value-03'); insert into SAMPLE012_TEST_TABLE (value) values ('value-04'); insert into SAMPLE012_TEST_TABLE (value) values ('value-05'); insert into SAMPLE012_TEST_TABLE (value) values ('value-06');
次に、いつもどおりにSqlマッピングファイルを作成します。
今回は、データの取得のみを行います。
<?xml version="1.0" encoding="Windows-31J"?> <!-- vim:set ts=4 sw=4 et ws is nowrap ft=xml: --> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <sqlMap namespace="DaoSample1"> <typeAlias alias="Sample012TestTable" type="gsf.samples.ibatis.sample012.Sample012TestTable"/> <select id="findAllSample012TestTable" resultClass="Sample012TestTable"> select id ,value from SAMPLE012_TEST_TABLE order by id </select> </sqlMap>
次に、これもいつもと同じようにデータクラスの定義.
// vim:set ts=4 sw=4 et ws is nowrap ft=java: package gsf.samples.ibatis.sample012; import java.io.*; import org.apache.commons.lang.builder.*; public class Sample012TestTable implements Serializable{ /** ID */ private Integer id; /** VALUE */ private String value; /** * コンストラクタ.<br/> * */ public Sample012TestTable(){ // nop; } /** * Get id. * * @return id as Integer. */ public Integer getId(){ return this.id; } /** * Set id. * * @param id the value to set. */ public void setId(Integer id){ this.id = id; } /** * Get value. * * @return value as String. */ public String getValue(){ return this.value; } /** * Set value. * * @param value the value to set. */ public void setValue(String value){ this.value = value; } @Override public String toString(){ return new ReflectionToStringBuilder(this).toString(); } }
ここまで、定義したら、SQLMAP設定ファイルにマッピングファイルを定義しておきます。
ここまでは、SqlMapを使用しているパターンと全く同じです。
長くなったので、DAOの作成は、次にします。