Spring MVC

Spring MVCでMyBatisによるOracle連携処理を実装してみた

今回は、Spring MVC上で、MyBatisによるOracle連携処理を行うプログラムを作成してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

Spring MVCでチェック処理を実装してみた今回は、Spring MVC上で、チェック処理を行うプログラムを作成してみたので、そのサンプルプログラムを共有する。 前提条件 ...

流用ソース

Spring Bootを使っていた、下記記事のソースコードを流用するものとする。

Spring BootのWEB画面上でnull許可項目のDB更新機能を追加してみた(ソースコード編)今回も引き続き、Spring BootのWEB画面上でDB更新項目がNULL更新できるパターンの実装について述べる。ここでは、具体的なサ...

サンプルプログラムの実行結果

下記記事の「完成した画面イメージの共有」と同じ結果となる。ただし、初期表示画面へのアクセスパスは、「http://(サーバー名):(ポート番号)/(プロジェクト名)/」と読み替えること。

Spring BootのWEB画面上でnull許可項目のDB更新機能を追加してみた(完成イメージと前提条件)これまで本ブログで、Spring BootのWEB画面で、MyBatisによるDB更新機能を何度か取り上げてきたが、DB更新はNull更...



サーバーへのojdbc6.jarの配置

Spring MVCの場合は、Oracle用JDBC用Jarファイル(ojdbc6.jar)を、デプロイ先のサーバー上に配置する必要がある。下図のように、「pivotal-tc-server\runtimes\tomcat-9.0.13.B.RELEASE\lib」下に、ojdbc6.jarを配置する必要がある。
ojdbc6をサーバーに配置

サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、「前提条件」または「流用ソース」のプログラムから変更したプログラムである。

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)はデプロイ先のサーバー上に配置する必要がある。