参考:This blog is all about me doing nothing serious :): Using MyBatis 3 with Spring 3 Using Mapper XML Files
上記のサイトではorg.mybatis.spring.SqlSessionTemplateのコンストラクタが引数なしでセッターでインジェクションしていますが、Spring - mybatis - An introduction to MyBatis integration with Spring - SQL Mapping Framework for Java - Google Project Hostingのバージョン1.0.1ではコンストラクタに引数が必要になっていたので変更してあります。
GitHubのソースに含まれない設定内容は以下の通りです。ここではDBはPostgreSQLを使用しています。
$TOMCAT_HOME/conf/server.xmlの
<GlobalNamingResources>
に以下のようにデータソース定義を追加します。<Resource name="jdbc/postgresql" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/springdb1" username="spring" password="spring" maxActive="20" maxIdle="10" maxWait="-1" />
$TOMCAT_HOME/lib/にPostgreSQLのJDBCドライバを入れます。ダウンロードはこちら。PostgreSQL JDBC Driver
[Window]/[Preferences]→[Tomcat]→[コンテキスト宣言モード]を「コンテキスト・ファイル」にしていると、コンテキストファイルに
<ResourceLink>
タグの記述が必要です。プロジェクトのプロパティの[Tomcat]の[その他の情報]に以下の内容を設定しておきます。<ResourceLink name="jdbc/postgresql" global="jdbc/postgresql" type="javax.sql.DataSource"/>なお、この設定は上記のGitHubのソースの.tomcatpluginに含まれています。
あと、SpringやMyBatisの設定をsrc/main/webapp/WEB-INF以下に置かず、src/main/resources以下においてclasspath:~やclasspath*:~で参照する方法もあるらしい。Problems with classpath between Eclipse, Tomcat and JUnit in Spring 3 app - Stack Overflowとか。ただ、classpath内に置く利点が私にはまだ不明なので、とりあえずWEB-INF以下に置く方式のままにしておきます。レファレンスではそうなっていますし。
13. Object Relational Mapping (ORM) Data Access
3. The IoC container
17. Integrating with other web frameworks
Spring application context loading tricks « Gridshoreによるとclasspath*:とワイルドカードではまることもあるらしいので注意。