今回は、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接続に必要なライブラリを追加している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!-- 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オブジェクトの生成処理を追加している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- 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アノテーションを削除している。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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)はデプロイ先のサーバー上に配置する必要がある。