01. SpringBoot + IntelliJ + MySQL(MyBatis)で環境構築してみた (Windows10)

# 対象
**「勉強のためにjavaを用いた簡単なAPIとかWebアプリを作りたいけど、自宅PCで環境構築するのが面倒だな…」という方**を主な対象として記載していきます。
細かな手順については各リンクを準備していますのでそちらに譲りまして、簡単な作業手順を記載していきます。

因みに筆者の環境はWindowsのため、Windowsユーザであれば同じ手順で環境構築ができるはずです。

# 概要
このページでは**SpringBoot(java)からDBへつなげるところまで**を記載しています。
実際のプログラムには触れていないのでご注意ください。
タイトルのままですが、以下の構成で開発ができるようにしていきます。

- JDK：Java SE Development Kit 8u191
- IDE：IntelliJ Community Edtion
- FW：SpringBoot 2.1.0
- DBサーバ：MySQL Community Server 8.0.13
- O/Rマッパー：MyBatis

# 手順
## 1. 各種ツールをインストールする
### 1-1. JDKをインストールする
1. [Oracleの公式サイト](https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)にアクセスします。
2. 今回は**JDK 8u191**を使用するので**Accept License Agreement**にチェックを入れ、使用するOSに合ったものを選択します。(私はWindows x64を選択しました)
![インストール手順1.png](https://qiita-image-store.s3.amazonaws.com/0/188440/d9a3e68f-1f1a-7c4d-328b-be7ca51f545b.png)

3. ダウンロードされたexeファイルを実行し、インストーラに従ってインストールを完了させてください。
4. 環境変数(**JAVA_HOME、Path**)の設定を行います。

JDKや環境変数については[こちらの記事](https://javaworld.helpfulness.jp/post-24/)を参考にしてください。
環境変数の設定、確認はしっかりしておきましょう。

### 1-2. IntelliJ IDEAをインストールする
1. [IntelliJの公式サイト](https://www.jetbrains.com/idea/)にアクセスし、画面中央の**DOWNLOAD**をクリックします。


2. **Ultimate(有償)**と**Community(無償)**のどちらか[^1]を選択します。(私はCommunityを選択しました)


3. ダウンロードされたexeファイルを実行し、手順通りにインストールを完了させてください。

IntelliJについて手順の詳細は[こちらの記事](https://qiita.com/syu_chan_1005/items/46f94412f7493d6e60eb)をご覧ください。

### 1-3. MySQLをインストールする
1. [MySQLの公式サイト](https://dev.mysql.com/downloads/windows/installer/8.0.html)にアクセスします。
2. OSを選択し、**DOWNLOAD**をクリックします。 ※32bitと記載があるかもしれませんが気にせずダウンロードしてください
![ダウンロード手順1.png](https://qiita-image-store.s3.amazonaws.com/0/188440/f1d07925-c5ef-11e9-aa90-5976c6da7790.png)

3. **No thanks, just start my download.**をクリックします。
![ダウンロード手順2.png](https://qiita-image-store.s3.amazonaws.com/0/188440/e6a27c92-f252-a68a-1bc7-84988b1c0ee2.png)

4. ダウンロードされたmsiファイルを実行し、手順通りにインストールを完了させてください。

手順の詳細は[こちらの記事](https://qiita.com/a_t_a/items/69813e55a1614796059d)をご覧ください。
JDKと同じく環境変数の設定、確認まで行っておきましょう。
<font color="red">※もし再インストールする必要が出た場合は[こちらの記事](http://d.hatena.ne.jp/discoverwest/20100704/1278253003)を参考にしてください。
　コンパネからアンインストールしただけでは再インストールに失敗するようです。</font>

ここまで終わればインストールは完了です。
続いてプロジェクトを作成しましょう。

## 2. SpringBootProjectを作成する
1. IntelliJを立ち上げます。プラグインとか聞かれるかもしれませんが、一旦何もせず進めます。
2. **Create New Project**をクリックします。
![プロジェクト作成1.png](https://qiita-image-store.s3.amazonaws.com/0/188440/8e8ca2db-8b0a-d8e5-6137-5e0104b34fc4.png)

3. **Gradle**を選択し、**Java**にチェック後、**Next**をクリックします。※SDKは先ほどインストールしたJDKを選択しましょう。
![プロジェクト作成2.png](https://qiita-image-store.s3.amazonaws.com/0/188440/785ba034-6129-35a1-de64-93173483ca07.png)

4. **GroupId**と**ArtifactId**を入力し、**Next**をクリックします。(各IDは好きなものにしてください)
![プロジェクト作成3.png](https://qiita-image-store.s3.amazonaws.com/0/188440/aa68ef5c-70c1-5a8c-800c-e13b0cec09b6.png)
※[GroupId、ArtifactIdとは何か](https://improve-future.com/what-are-groupid-artifactid.html)

5. 以降は設定を特に変えず**Next**をクリックし、**Finish**まで進めます。

ここまで進めるとプロジェクトが作成されたかと思います。（エラーが出ていても無視してよいです）
次は必要な依存関係を入れたいので、SpringInitializerを使ってみましょう。

## 3. SpringInitializerを使って必要な依存を注入する

1. build.gradleの設定をSpringBoot用に変更するために**Sprinig Initializer**を使用します。[こちら](https://start.spring.io/)へアクセスしてください。


2. 画面上部のセレクトボックスを**Generate a Gradle Project with java and Spring Boot 2.1.0**となるように変更します。


3. GroupIdとArtifactIdはプロジェクト作成時と同じになるように変更します。
4. **Dependencies**で必要な依存を選択します。今回は**MySQL**と**MyBatis**を検索し、選択しましょう。
5. 最終的には以下のような画面になると思います。設定ができたら**Generate Project**をクリックしましょう。
![プロジェクト作成4.png](https://qiita-image-store.s3.amazonaws.com/0/188440/4fca64ad-30ac-b1a8-3716-adef4a40f7d7.png)

6. ダウンロードされたzipファイルを開き、その中にある**build.gradle**をプロジェクト上に存在しているbuild.gradleへコピペします。その後画面右上の**Refresh**を実行し、再度依存を取り込み直しましょう。最初のプロジェクト作成時にエラーが出ていたとしても、この時は正常に完了できるはずです。
![プロジェクト作成5.png](https://qiita-image-store.s3.amazonaws.com/0/188440/6f6d218f-20d0-e772-3596-bf990d447631.png)

ここまでくればあと一息です。今の状態ではDBの接続設定など行っていないのでアプリは起動しません。
application.yml(またはproperties)の修正をしていきましょう。

## 4. application.yml(properties)を修正してDBに接続する
### 4-1. DBにテーブルを作る
1. **MySQL Command Line Client**を開き、ログインします。(passwordはインストール時に設定したものです)
![テーブル作成1.png](https://qiita-image-store.s3.amazonaws.com/0/188440/ca6c1828-5df9-790f-4e4b-4660cd981397.png)

2. なんでもよいので適当なDBを作成します。
![テーブル作成2.png](https://qiita-image-store.s3.amazonaws.com/0/188440/b7f9b522-eb46-c9d1-86ff-c0723b57cb02.png)

3. 続いてテーブルを作成します。ついでにデータも適当に入れておきます。
![テーブル作成3.png](https://qiita-image-store.s3.amazonaws.com/0/188440/40f598cb-b7fd-0e52-4164-400df2eccee7.png)

4. タイムゾーンも設定しておきましょう。[こちら](https://qiita.com/KKZ@github/items/e3f594b04c9233a86419)を参考に、my.iniに設定を追加し、MySQL Serverを再起動してください。

### 4-2. 接続情報をapplication.ymlに記載する
1. application.ymlにDB情報を記載していきます。項目は最低でも**url、username、password**が必要です。
    - **url**は*jdbc:mysql://localhost/sample_db(テーブル名)*とします。
    - **username**は*root*とします。(他にユーザを作っていればそちらでも構いません)
    - **password**は*usernameで入力したユーザのパスワード*を入力します。
![DB接続1.png](https://qiita-image-store.s3.amazonaws.com/0/188440/51aaff18-dc4b-a664-155b-1ed3afd4da23.png)

2. ここで一度プロジェクトのsrc/main配下にある**〇〇Application.java**を実行してみましょう。**Started 〇〇Application**というログが出ていれば設定は正常に読み込めているので成功です。
![DB接続2.png](https://qiita-image-store.s3.amazonaws.com/0/188440/0acc8a0f-c652-eda5-4075-8ab97ebea694.png)


設定回りについては[こちら](https://qiita.com/unhurried/items/d879d1c36bf367798a00)も参考にしてください。

## 5. 実際にDBから値を取得してみる（環境設定から少しずれますが）
1. 適当にJavaを書いてDBから値を取得してみましょう。（この辺りはまた別で詳しく書く予定です）
2. postmanで叩いた結果、取得できました！
![DB接続3.png](https://qiita-image-store.s3.amazonaws.com/0/188440/742ef4ad-5881-2ca6-6862-dde9ec24eca6.png)

# 自分でやってみた感想
**…なんかもっと簡単な方法ってないもんでしょうかね。**
SpringBootって便利だなー！と思っていてもっとスムーズに行くと思っていたので、ちょっと億劫に感じました。
でもこれでDBには繋げるようになりました！

# 最後に
「もっといい方法があるよ！」
「ここはこう設定しておいた方がいいよ！」
などコメントお待ちしております！

次は実際にDBに繋ぐプログラムの書き方をご紹介したいと思います。
⇒ **記事をアップしました！**[SpringBootからMySQLへ接続するAPIを作ってみた](https://qiita.com/supreme0110/items/504781e5087f4c4e771b)
最後までお読みいただきありがとうございましたー！

[^1]: 有償無償による違いは[こちら](https://samuraism.com/jetbrains/intellij-idea/quickstart/basics-and-installation)をご覧ください。因みに筆者はライセンスの都合で業務でもCommunityを使用していますが、全く支障はありません。**お試しであればCommunity(無償)をお勧め**します。