今回は、Spring MVC上で、MyBatisによるOracle連携処理を行うプログラムを作成してみたので、そのサンプルプログラムを共有する。
前提条件
下記記事の実装が完了していること。
流用ソース
Spring Bootを使っていた、下記記事のソースコードを流用するものとする。
サンプルプログラムの実行結果
下記記事の「完成した画面イメージの共有」と同じ結果となる。ただし、初期表示画面へのアクセスパスは、「http://(サーバー名):(ポート番号)/(プロジェクト名)/」と読み替えること。
サーバーへのojdbc6.jarの配置
Spring MVCの場合は、Oracle用JDBC用Jarファイル(ojdbc6.jar)を、デプロイ先のサーバー上に配置する必要がある。下図のように、「pivotal-tc-server\runtimes\tomcat-9.0.13.B.RELEASE\lib」下に、ojdbc6.jarを配置する必要がある。

サンプルプログラムの作成
作成したサンプルプログラムの構成は以下の通り。

なお、上記の赤枠は、「前提条件」または「流用ソース」のプログラムから変更したプログラムである。
pom.xmlに追加した内容は以下の通りで、Spring JDBC接続、MyBatis接続に必要なライブラリを追加している。
<!-- Spring JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>なお、ここで追加したライブラリのバージョンは、以下のサイトと同じ内容にしている。
https://tokkan.net/spring/mybatisweb.html
servlet-context.xmlに追加した内容は以下の通りで、DB接続先、MyBatisのMapperオブジェクトの生成処理を追加している。
<!-- DB接続先の読み込み -->
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<beans:property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<beans:property name="username" value="USER01" />
<beans:property name="password" value="USER01" />
</beans:bean>
<!-- MyBatisのMapperオブジェクトの生成 -->
<beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="mapperLocations" value="classpath*:com/example/demo/*.xml" />
</beans:bean>
<beans:bean id="userDataMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<beans:property name="mapperInterface" value="com.example.demo.UserDataMapper" />
<beans:property name="sqlSessionFactory" ref="sqlSessionFactory" />
</beans:bean>また、UserDataMapper.javaの内容は以下の通りで、「流用ソース」のソースから、@Mapperアノテーションを削除している。
package com.example.demo;
import java.util.Collection;
public interface UserDataMapper {
/**
* ユーザーデータテーブル(user_data)から検索条件に合うデータを取得する
* @return ユーザーデータテーブル(user_data)の検索条件に合うデータ
*/
Collection<UserData> findBySearchForm(SearchForm searchForm);
/**
* 指定したIDをもつユーザーデータテーブル(user_data)のデータを取得する
* @param id ID
* @return ユーザーデータテーブル(user_data)の指定したIDのデータ
*/
UserData findById(Long id);
/**
* 指定したIDをもつユーザーデータテーブル(user_data)のデータを削除する
* @param id ID
*/
void deleteById(Long id);
/**
* 指定したユーザーデータテーブル(user_data)のデータを追加する
* @param userData ユーザーデータテーブル(user_data)の追加データ
*/
void create(UserData userData);
/**
* 指定したユーザーデータテーブル(user_data)のデータを更新する
* @param userData ユーザーデータテーブル(user_data)の更新データ
*/
void update(UserData userData);
/**
* ユーザーデータテーブル(user_data)の最大値IDを取得する
* @return ユーザーデータテーブル(user_data)の最大値ID
*/
long findMaxId();
}
さらに、MapperクラスのXMLファイルは、servlet-context.xmlのsqlSessionFactory生成時に設定した場所に配置していて、内容は「流用ソース」と同じ内容になっている。
その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-mvc-web-mybatis-oracle/demo
要点まとめ
- Spring MVCプロジェクトでMyBatisを用いたOracle接続処理を実装するには、Spring JDBC接続、MyBatis接続に必要なライブラリを追加し、servlet-context.xmlに、DB接続先の読み込みと、MyBatisのMapperオブジェクトの生成処理を追加する必要がある。また、Oracle用JDBC用Jarファイル(ojdbc6.jar)はデプロイ先のサーバー上に配置する必要がある。





