トレーニングのプレゼンテーション

iBATIS入門
First step guide
iBATISのアーキテクチャ
Paramete Object
(Input)
SqlMap
.xml
JavaBean
SqlMapConfig
.xml
SqlMap
.xml
Result Object
(Output)
JavaBean
SQL Map
Map
(HashMap,
TreeMap,..)
Mapped
Statement
Mapped
Statement
Mapped
Statement
Map
(HashMap,
TreeMap,..)
“Primitive”
(Integer,
String,..)
Mapped
Statement
Mapped
Statement
Mapped
Statement
“Primitive”
(Integer,
String,..)
Mapped
Statement
Mapped
Statement
Mapped
Statement
XML
XML
(Caching,Lazy Loading,..)
JDBC
Database
SqlMapConfig.xml
• iBATIS全体に関わる設定を行う
− トランザクションマネージャの設定
• JDBC or JNDI or DBCP
− 各種パラメータ
• キャッシュ設定、遅延ロード設定
• 最大/最小リクエスト数、セッション数、トランザクション数
− 利用するSqlMapファイルの指定
SqlMap.xml
• SQL文の定義
− 各SQL文にはユニークなidを指定
• クエリへのInputパラメータの埋め込み
− パラメータのクラス名とフィールド名で指定
• クエリ実行結果とOutputパラメータのマッピング
− テーブルのカラム名(又はエイリアス名)とクラスのフィー
ルド名が同じ場合は自動的にマッピング
− そうでない場合は<resultMap>で対応付け
• 原則として1テーブル毎に作成
使用例)Select
PERSON
Select実行例
・・・
SqlMapClient sqlMap = getSqlMap();
・・・
Integer personPk = new Integer(5);
Person person = (Person)sqlMap.queryForObject(“getPerson”, personPK)
・・・
PER_ID
NUMBER(5,0)
PER_FIRST_NAME
VARCHAR(40)
PER_LAST_NAME
VARCHAR(40)
PER_BIRTH_DATE
DATE
PER_WEIGHT_KG
NUMBER(4,2)
PER_HEIGHT_M
NUMBER(4,2)
Person.xml
<select id=“getPerson” parameterClass=“int” resultClass=“Person”>
SELECT
PER_ID as id,
PER_FIRST_NAME as firstName,
PER_LAST_NAME as lastName,
PER_BIRTH_DATE as birthDate,
PER_WEIGHT_KG as weightInKillograms,
PER_HEIGHT_M as heightInMeters
FROM PERSON
WHERE PER_ID = #value#
</select>
引数が単一の
primitive型の場合、
#value#で指定可能
Person.java
int
id
String firstName
String lastName
Date birthDate
double weightInKilograms
double heightInMeters
PK
使用例)Update
PERSON
Update実行例
・・・
person.setHeightInMeters(1.83);
person.setWeightInKilograms(86.36);
・・・
sqlMap.update(“updatePerson”, person)
・・・
PER_ID
NUMBER(5,0)
PER_FIRST_NAME
VARCHAR(40)
PER_LAST_NAME
VARCHAR(40)
PER_BIRTH_DATE
DATE
PER_WEIGHT_KG
NUMBER(4,2)
PER_HEIGHT_M
NUMBER(4,2)
Person.xml
<select id=“updatePerson” parameterClass=“Person”>
UPDATE PERSON
SET
PER_FIRST_NAME = #firstName#,
PER_LAST_NAME = #lastName#,
PER_BIRTH_DATE = #birthDate#,
PER_WEIGHT_KG = #weightInKillograms#,
PER_HEIGHT_M = #heightInMeters#
WHERE PER_ID = #id#
</select>
#フィールド名#で指定
Person.java
int
id
String firstName
String lastName
Date birthDate
double weightInKilograms
double heightInMeters
PK