SEワンタンの独学備忘録

独学した内容や資格試験に対する取り組みの備忘録

【Spring】H2 Databaseを使用したMyBatis3環境構築

主には以下の記事の某TERASOLUNAの続き。すこしだけやる。
TERASOLUNAのチュートリアル以外だとほぼ使えないかも?

www.wantanblog.com


参考にしたチュートリアル↓
11.1. チュートリアル(Todoアプリケーション) — TERASOLUNA Server Framework for Java (5.x) Development Guideline 5.5.1.RELEASE documentation

なにをやるのか

前回やったことと今回やること

【前回やったこと】
・EclipseにSpring Tool Suiteプラグインのインストール
・Win10にMavenのダウンロード&インストール
・ブランクプロジェクトの作成@Maven(インメモリ実装)
・Eclipseにプロジェクトのインポート

【今回やること】
前回はチュートリルのアプリケーション構築にて「インメモリ実装」を行ったためDB側の実装をまともに行える状態になっていませんでした。
なのでSpringでのDB接続周辺の一つの実装方法を学ぶため「MyBatis3用のブランクプロジェクト」を作成してEclipseに取り込みます。


前回実施したものを前提にするため、「todo」プロジェクトが残った状態でプロジェクトを追加します。
また今回の操作だけでは同様の動作にならない可能性もあります。

MyBatis3とは

そうゆう記事ではないので簡単にだけ。

MyBatis はカスタム SQL、ストアドプロシージャ、高度なマッピング処理に対応した優れた永続化フレームワークです。 MyBatisを使うことで、直接 JDBC を扱うコードを書いたり、クエリ引数やクエリ結果を手動で設定する必要がほとんどなくなります。 MyBatis の設定やデータベースレコードと Java オブジェクトの関連付けは、XML またはアノテーションを使って行うことができます。

引用元:MyBatis – MyBatis 3 | イントロダクション

今回のチュートリアルでは主に、アプリからDBに接続及び参照、更新するためのSQL実行のために使用します。

H2 Databaseとは

H2 Databaseとは、Javaプラットフォーム上で動く、ACID関係データベース。オープンソース。

引用元:https://ja.wikipedia.org/wiki/H2_Database


APサーバ上にDBを作成する感じか?
ほんとは仮想環境にMYSQLを導入してみたりしてやってみたかったけど、諸事情につき検証時間がとれないためチュートリアルに沿って一旦はH2 Databaseを使用します。

Maven側の操作

ブランクプロジェクトの作成@Maven

MavenにMyBatis3用ブランクプロジェクトを作成します。

コマンドプロンプト上で以下のコマンドを実行します。前回作成したプロジェクトがそのまま残っているため、「MyBatis」をチュートリアルのコマンドに一部追加してあります。

※コマンドプロンプト上でプロジェクトフォルダを作成したい場所に移動するのを忘れずに。

mvn archetype:generate -B^
 -DarchetypeGroupId=org.terasoluna.gfw.blank^
 -DarchetypeArtifactId=terasoluna-gfw-web-blank-mybatis3-archetype^
 -DarchetypeVersion=5.5.1.RELEASE^
 -DgroupId=com.example.todoMyBatis^
 -DartifactId=todoMyBatis^
 -Dversion=1.0.0-SNAPSHOT

「BUILD SUCCESS」が表示されるまで待ちます。

f:id:wantanBlog:20190830022119p:plain


プロジェクトフォルダ直下に「pom.xml」が存在していることだけ確かめてOKとしました。

Eclipseプロジェクトへの変換@Maven

ここも前回記事と同様の流れでダウンロードしたプロジェクトをEclipse用に変換しておきます。

以下、コマンドプロンプト上の操作になります。

プロジェクト直下に移動。

 C:\todoMyBatis

Eclipse用のプロジェクトへの変換。

mvn eclipse:eclipse


こちらも「BUILD SUCCESS」が表示されるまで待ちます。

f:id:wantanBlog:20190830022813p:plain

Maven側の準備がここまでで完了。

Eclipse側の操作

ここからは基本的にはEclipse上での操作となります。

プロジェクトのインポート

Maven側に作成したプロジェクトをEclipseにインポートします。

f:id:wantanBlog:20190830023340p:plain

こんな感じでできれば大丈夫でしょう。

f:id:wantanBlog:20190830023855p:plain

ここまででエラーが表示されなければとりあえずOK!
少しこなれてきましたね。

なお細かい操作手順は以下の記事の「プロジェクトのインポート」の通りになります。
またここの段階で前回同様にプロジェクトが正しく動作するか動作確認をしておいた方が無難でしょう。
www.wantanblog.com

xxx-infra.propertiesファイルの編集

DBの向き先を設定するためにプロパティファイルの編集を行います。
私の場合は以下のファイル。

C:\todoMyBatis\src\main\resources\META-INF\spring\todoMyBatis-infra.properties

向き先の設定とAPサーバ起動時にH2 Database上にテーブルが存在しない場合は作成するようにします。これはチュートリアルの内容通りです。
設定するプロパティは「database.url」で私は以下のように既にあるものを編集しました。プロジェクト名称だけ注意する。

#編集した設定
database.url=jdbc:h2:mem:todoMyBatis;DB_CLOSE_DELAY=-1;INIT=create table if not exists todo(todo_id varchar(36) primary key, todo_title varchar(30), finished boolean, created_at timestamp)
ソースファイルのコピー

チュートリルに沿って進めていない場合は全くの不要となります。私の同じことをやっている場合にはプロジェクト名の変更にファイルの中身や名称を修正しましょう。
今回はプロジェクト名称を変えたので、そこを置換するのが少し面倒でした。もっとかしこい方法があるのかもしれない。
沿わない場合は別途動作確認ができる画面を準備することになります。

Mapper.xmlファイルの作成

Repositoryインタフェースのメソッドが呼び出された際に実行するSQLを定義するためのMapperファイルを作成します。
ちなみにRepositoryインタフェースはMyBatisの場合は自動生成されるそうです。
私の場合の実装内容はチュートリアルの通りで、以下のファイルを追加し中身を追記しました。

C:\todoMyBatis\src\main\resources\com\example\todoMyBatis\domain\repository\todoMyBatis\TodoMyBatisRepository.xml
動作確認

今回作成したプロジェクトをサーバ実行する。

私の場合は以下へアクセスし、画面が表示されることを確認した。
またデータの登録と参照が行えることを確認する。

http://localhost:8080/todoMyBatis/todoMyBatis/list


今回は特に問題なく進みました(*´ω`*)
チュートリアル自体はまだ続くかも。