概要
今更ながら、SpringFrameworkとiBatisを連携を試してみます。applicationContextの設定から、sqlMapの設定、テストまでを大まかに説明します。
動作環境
項目 | 内容 |
---|---|
OS | Mac OS X 10.06 |
DB | MySQL 5.5 |
開発環境 | eclipse3.6 |
SpringFramework | 1.2 |
iBatis | 2.0 |
前提事項
・以下のテーブルを作成していること。CREATE TABLE `PERSON` ( `PER_ID` INT NOT NULL , `PER_FIRST_NAME` VARCHAR(40) NOT NULL , `PER_LAST_NAME` VARCHAR(40) NOT NULL , PRIMARY KEY (`PER_ID`) ) ENGINE = InnoDB;・mysqlのJDBCドライバを入手済であること。
内容
1.SpringFrameworkのライブラリを入手する。
現時点の最新バージョンは3.0.5ですが、今回は1.2系のライブラリを入手します。
以下のURLより入手できますので、入手し適当な場所に解凍して下さい。
こちら
2.iBatisのライブラリを入手する。
現時点では「iBatis」と言う名前から「MyBatis」という名前に変更になっています。
入手についてはこちらを参考にして下さい。
3.Springの定義ファイルを作成する。
Springの定義ファイル「applicationContext-ibatis.xml」を作成します。
このファイルでは、
・データソースの設定
・iBatis設定ファイルの設定
・Daoに対してデータソースの設定
を行っています。
com.mysql.jdbc.Driver jdbc:mysql://localhost/ibatis ibatis ibatis dao/sqlMapConfig.xml
4.iBatisの定義ファイルを作成する。
iBatisで使用する定義ファイル「sqlMapConfig.xml」を以下のように作成しました。
5.O/Rマッピングファイルを作成する。
O/Rマッピングファイル「PersonDao.xml」を以下のように作成しました。
上記は見ての通り、SQLです。
Hibernateだと、確かかけないんです。SQLを。
iBatisだとSQLを書けるのでSQLを良く使用しているエンジニアだと取っ付きやすいと思います。
6.DTOを作成する。
DBからの取得した結果を格納するためのDTOを作成します。
以下のようなクラスを作成しました。
public class Person { private int id; private String firstName; private String lastName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }
7.Daoクラスを作成する。
今回の例では、インタフェースとその実装クラスそれぞれを作成しました。
・PersonDao
public interface PersonDao { public List・PersonDaoImplselectAll(); }
public class PersonDaoImpl extends SqlMapClientDaoSupport implements PersonDao { @Override public ListselectAll() { return (List ) getSqlMapClientTemplate().queryForList("selectAll"); } }
テスト
1〜7で使用する準備が整ったので、実際に使用できるか試してみます。public class StartUp { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-ibatis.xml"); BeanFactory factory = (BeanFactory) context; PersonDao dao = (PersonDao) factory.getBean("personDao"); ListpersonList = dao.selectAll(); System.out.println(personList.size()); } }
実行すると、以下のような感じでログが表示されました。
正常に連携できました。
2011/03/30 22:42:27 org.springframework.context.support.AbstractApplicationContext prepareRefresh 情報: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@39617189: display name [org.springframework.context.support.ClassPathXmlApplicationContext@39617189]; startup date [Wed Mar 30 22:42:27 JST 2011]; root of context hierarchy 2011/03/30 22:42:27 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 情報: Loading XML bean definitions from class path resource [applicationContext-ibatis.xml] 2011/03/30 22:42:27 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory 情報: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@39617189]: org.springframework.beans.factory.support.DefaultListableBeanFactory@39b8d6f7 2011/03/30 22:42:27 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 情報: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@39b8d6f7: defining beans [dataSource,transactionManager,sqlMapClient,personDao]; root of factory hierarchy 2011/03/30 22:42:27 org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName 情報: Loaded JDBC driver: com.mysql.jdbc.Driver 1
参考情報
なし最後に
説明をほとんどしませんでしたが、上記の内容をおのおのの環境に合わせて使って貰えれば動作すると思います。次回以降、トランザクションに関して試してみたいと思います。
0 件のコメント:
コメントを投稿