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

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

SN

11/17 21:00



対象

「勉強のために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をインストールする



Oracleの公式サイトにアクセスします。
今回はJDK 8u191を使用するのでAccept License Agreementにチェックを入れ、使用するOSに合ったものを選択します。(私はWindows x64を選択しました)

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


JDKや環境変数についてはこちらの記事を参考にしてください。

環境変数の設定、確認はしっかりしておきましょう。


1-2. IntelliJ IDEAをインストールする


IntelliJの公式サイトにアクセスし、画面中央のDOWNLOADをクリックします。
Ultimate(有償)とCommunity(無償)のどちらか1を選択します。(私はCommunityを選択しました)
ダウンロードされたexeファイルを実行し、手順通りにインストールを完了させてください。


IntelliJについて手順の詳細はこちらの記事をご覧ください。


1-3. MySQLをインストールする



MySQLの公式サイトにアクセスします。
OSを選択し、DOWNLOADをクリックします。 ※32bitと記載があるかもしれませんが気にせずダウンロードしてください

ダウンロード手順1.png
No thanks, just start my download.をクリックします。

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


手順の詳細はこちらの記事をご覧ください。

JDKと同じく環境変数の設定、確認まで行っておきましょう。

※もし再インストールする必要が出た場合はこちらの記事を参考にしてください。

 コンパネからアンインストールしただけでは再インストールに失敗するようです。

ここまで終わればインストールは完了です。

続いてプロジェクトを作成しましょう。


2. SpringBootProjectを作成する


IntelliJを立ち上げます。プラグインとか聞かれるかもしれませんが、一旦何もせず進めます。
Create New Projectをクリックします。

プロジェクト作成1.png
Gradleを選択し、Javaにチェック後、Nextをクリックします。※SDKは先ほどインストールしたJDKを選択しましょう。

プロジェクト作成2.png
GroupIdとArtifactIdを入力し、Nextをクリックします。(各IDは好きなものにしてください)

プロジェクト作成3.png

※GroupId、ArtifactIdとは何か
以降は設定を特に変えずNextをクリックし、Finishまで進めます。


ここまで進めるとプロジェクトが作成されたかと思います。(エラーが出ていても無視してよいです)

次は必要な依存関係を入れたいので、SpringInitializerを使ってみましょう。


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


build.gradleの設定をSpringBoot用に変更するためにSprinig Initializerを使用します。こちらへアクセスしてください。
画面上部のセレクトボックスをGenerate a Gradle Project with java and Spring Boot 2.1.0となるように変更します。
GroupIdとArtifactIdはプロジェクト作成時と同じになるように変更します。
Dependenciesで必要な依存を選択します。今回はMySQLとMyBatisを検索し、選択しましょう。
最終的には以下のような画面になると思います。設定ができたらGenerate Projectをクリックしましょう。

プロジェクト作成4.png
ダウンロードされたzipファイルを開き、その中にあるbuild.gradleをプロジェクト上に存在しているbuild.gradleへコピペします。その後画面右上のRefreshを実行し、再度依存を取り込み直しましょう。最初のプロジェクト作成時にエラーが出ていたとしても、この時は正常に完了できるはずです。

プロジェクト作成5.png


ここまでくればあと一息です。今の状態ではDBの接続設定など行っていないのでアプリは起動しません。

application.yml(またはproperties)の修正をしていきましょう。


4. application.yml(properties)を修正してDBに接続する


4-1. DBにテーブルを作る


MySQL Command Line Clientを開き、ログインします。(passwordはインストール時に設定したものです)

テーブル作成1.png
なんでもよいので適当なDBを作成します。

テーブル作成2.png
続いてテーブルを作成します。ついでにデータも適当に入れておきます。

テーブル作成3.png
タイムゾーンも設定しておきましょう。こちらを参考に、my.iniに設定を追加し、MySQL Serverを再起動してください。



4-2. 接続情報をapplication.ymlに記載する



application.ymlにDB情報を記載していきます。項目は最低でもurl、username、passwordが必要です。



urlはjdbc:mysql://localhost/sample_db(テーブル名)とします。

usernameはrootとします。(他にユーザを作っていればそちらでも構いません)

passwordはusernameで入力したユーザのパスワードを入力します。
DB接続1.png



ここで一度プロジェクトのsrc/main配下にある〇〇Application.javaを実行してみましょう。Started 〇〇Applicationというログが出ていれば設定は正常に読み込めているので成功です。

DB接続2.png


設定回りについてはこちらも参考にしてください。


5. 実際にDBから値を取得してみる(環境設定から少しずれますが)


適当にJavaを書いてDBから値を取得してみましょう。(この辺りはまた別で詳しく書く予定です)
postmanで叩いた結果、取得できました!
DB接続3.png




自分でやってみた感想

…なんかもっと簡単な方法ってないもんでしょうかね。

SpringBootって便利だなー!と思っていてもっとスムーズに行くと思っていたので、ちょっと億劫に感じました。

でもこれでDBには繋げるようになりました!


最後に

「もっといい方法があるよ!」

「ここはこう設定しておいた方がいいよ!」

などコメントお待ちしております!

次は実際にDBに繋ぐプログラムの書き方をご紹介したいと思います。

最後までお読みいただきありがとうございましたー!






有償無償による違いはこちらをご覧ください。因みに筆者はライセンスの都合で業務でもCommunityを使用していますが、全く支障はありません。お試しであればCommunity(無償)をお勧めします。 ↩




PR:デジカフェ

Qiita - MySQLタグが付けられた新着投稿

MAMPを使ってのCakePHP環境構築備忘録

SN

12/17 15:13



前提として

・MAMP導入済み

・もしかすると違うかも(素人なんで)


第一ステップ

・PHPバージョン変更

参考

MAMPとComposerを使ったCakePHP3.xのローカル開発環境の構築

メモ:初心者とし...

MySQLが起動できない

MySQLが起動できない

SN

12/17 13:56



MySQLでエラーになるシーン

mysqlサーバーに入るときや、

$ mysql -u root


railsでmigrationを実行するとき。

$ bundle exec rake db:migrate


上記のようなコマンドを実行すると、正常に起動しない場合...

トランザクション処理を解説「初心者向け」

SN

12/17 13:29

これはユアマイスター Advent Calendar 2018の17日目の記事です。

サンプルコードを元にトランザクション処理を解説します。


サンプルコード


sample
<?php

namespace App\Controller;

use App\Controll...

MySQLでGISデータを扱う

SN

12/17 07:01

こんにちは。@onunuです。本記事はMySQL casual AdventCalendar 17日目の記事です。


本記事ではMySQL8で大幅に強化されたGISデータ周りのtipsについて触れたいと思います。ある程度尽くされた話題ではあ...

CloudSQLのIO性能を観察する(検証編)

SN

12/16 19:23



概要

前回の続き。ディスクサイズが50GB, 100GB, 200GB, 400GB, 600GBのパターンで、それぞれ負荷をかけてIO性能を観察する。

負荷のかけ方は、MySQLのLOAD DATA LOCAL INFILEで巨大なデータを読み込ませる。...

CloudSQLのIO性能を観察する(準備編)

SN

12/16 02:05



概要

CloudSQLのIO性能を観察する。CloudSQLはGCPで提供されているRDBMSのマネジメントサービス。(AWSで言うところのRDS)

CloudSQLのディスクのスループットとIOPSは、ディスクサイズで決定されるため、こ...

jQueryとPHPを使って会員登録用のフォームを作ってみた

jQueryとPHPを使って会員登録用のフォームを作ってみた

SN

12/15 21:35



概要

会員登録の際によく使われるフォームを作成してみました。具体的には、jQueryとPHPを使って、データベースにすでに登録されている場合はエラーを表示し、すべての項目が正しく入力されている場合データベ...

N+1問題をLaravelのEagerローディングで解決!

N+1問題をLaravelのEagerローディングで解決!

SN

12/15 17:42



少しだけ自己紹介

G's ACADEMYアドベントカレンダー2018 15日目!

LAB5の浅海です。現在Laravelをメインにさわっています。

ララボという小中高生向け家庭教師マッチングプラットフォームを運営してい...

[Laravel] DB更新を行うときはトランザクションに気をつけよう

SN

12/15 10:10

Laravel アドベントカレンダー2018 15日目です。

業務でLaravel書いていて、トランザクション管理されていないコード見たときに、

「あれ? Laracvelってトランザクションのコード書かないときどういう動作...

Fluentd + MySQL でログ保存 & 検索システムを考えてみた話

SN

12/15 07:02

食べログ DevOps チームの @e-ronny と申します。

この記事は Advent Calendar の15日目の投稿です。


概要

以下のようなシステムの設計を検討する機会があったので、その過程をまとめてみます。


アプリ...

CentOSにMetabaseを構築する方法

SN

12/15 03:02



構築


単純にやるならめっちゃ簡単。jar取ってきて配置して実行するだけ。

今回は、メタデータの管理DBをデフォルトのH2からMySQLに変更する。

そしてサービスとして運用する。



AP


インストール ...

使用するデータベースを変更する時

SN

12/14 18:05

自分用メモ。

rails newで新しいアプリケーションを生成したときにデフォルトのデータベースを変更するのを忘れていたため、後から修正。

Gemfileのsqliteをmysqlに書き換えるだけ

以上。

DOMAで複数列のIN句(列:条件 = n:n)を実装する。

SN

12/14 17:18



複数列のIN句???

こんなの

SELECT * FROM TEST_TBL
WHERE
(FIRST_NAME, LAST_NAME) IN (
('山田', '太郎'),
('鈴木', '次郎')
)



DOMAで実装

普通にやるとダメなのでfor文で頑...

【MySQL】作成した後のテーブルに主キーの追加

SN

12/14 15:54



何故するのか

主キーを付け忘れた

後々考えたら主キーが必要だった など


自分がこれを行うに至った状況

既に存在するテーブルについてのバックアップを2週間ほど保存しておいて

cronで物理削除を...

【MySQL】Keyのところに出る「MUL」の付け方

SN

12/14 14:34



なぜここに書くのか

前回のMySQL書き込みの際にPRIMARY KEYを後から付ける方法を書きましたが、別テーブルのユニークカラムのところに「MUL」と書いてあり、これがわからなかったため

https://qiita.com/q...

mysqlでダンプファイルからテーブルとcsvデータを読み込む方法

SN

12/14 14:25



はじめに

すでに出来上がってるデータベースに後から追加したいテーブルがある時が発生したので手順を書いていきたいと思います。


手順


ダンプファイルの読み込み

mysql -u username -p dbname < dump...

MySQL環境構築

SN

12/14 07:44



DockerでMySQL

docker-composeに挫折した。。。のでdocker runコマンドで。


MySQL5.7のインストールと起動

Docker Hub - MySQL

https://hub.docker.com/_/mysql/

docker run --name mysql57 -v /Users...

Raspberry PiをSQLサーバーにして、Python3からMySQLのデータを検索して表示させるまで

SN

12/13 23:17



はじめに

備忘録として書いてみます。


必要なパッケージを導入する


Apache2のインストール

$ sudo apt install apache2


IPアドレスを確認

$ ifconfig


IPアドレスにアクセスできればインストールでき...

JSPでデータベースを利用する(Eclipse)

SN

12/13 22:39



概要

JSPの学習をしていて、DBに接続しようとしたときに発生した例外やエラーへの対処法をまとめてみました。また、学習するにあたり、なかなかいいサンプルコードを見つけることができなかったので、最後には...

【MySQL】ソートをした際のNULLの位置について

SN

12/13 17:41



MySQLでソートをした際のNULLの位置について


table




id
name




1
aaa


2
NULL


3
bbb





昇順(NULLが上)

SELECT * FROM table ORDER BY name ASC;


実行結果:




id
name




2
NULL


1
aaa
...

PR:Amazonプライムビデオ

Qiita

Qiita - 人気の投稿

Qiita - AWSタグが付けられた新着投稿

Qiita - Gitタグが付けられた新着投稿

Qiita - Linuxタグが付けられた新着投稿

Qiita - MySQLタグが付けられた新着投稿

Qiita - nginxタグが付けられた新着投稿

Qiita - Dockerタグが付けられた新着投稿

Qiita - Pythonタグが付けられた新着投稿

Qiita - Rubyタグが付けられた新着投稿

Qiita - PHPタグが付けられた新着投稿

Qiita - Javaタグが付けられた新着投稿

Qiita - JavaScriptタグが付けられた新着投稿