Java

【Java】dockerを使ってMySQLのコンテナを準備してJavaで接続する方法

uhablog

こんにちは、大学時代にプログラミングの勉強を始め現在はエンジニアをしているuhablogです。
当ブログでは現役エンジニアがプログラミング初学者の方向けにプログラミングの学習法を発信しています。

独学が辛いなら...

この記事の目標

dockerを使ってMySQLのコンテナを用意。JavaのJDBCドライバを使用してMySQLのコンテナへ接続する。

この記事でわかること

  • dockerを使ったMySQLコンテナの立て方
  • Javaを使ってMySQLコンテナに接続する
  • そのためのJDBCのダウンロード方法及びEclipseでの使用方法

前提条件と動作環境

前提条件

  • dockerをなんとなく知っている、インストール済み
  • Java触ったことある
  • MySQLがデータベースであることを知っている

動作環境

  • macOS Catalina 10.15.7
  • java 8
  • Docker version 20.10.2

MySQLコンテナの準備

まずはdockerを使ってMySQLコンテナを準備します。
dockerがインストールされている状態でターミナルなどを使って以下コマンドを実行してください。

docker run -it -p 3306:3306 --name test-mysql -e MYSQL_ROOT_PASSWORD=rootpass -d mysql:latest

このコマンドによってMySQLのコンテナが作られます。MYSQL_ROOT_PASSWORD=の後に入れた文字列がrootユーザーのパスワードになります。
今回の例ではrootpassとしましたが、ここはなんでもいいです。

また「-p 3306:3306」によってホストとコンテナをポート3306同士でつないでいます。
これによってJavaからの接続が可能になります。

次に以下のコマンドでコンテナの中に入り込みます。

docker exec -it test-mysql bash

コンテナの中に入ったらさらにそこで以下コマンドを実行してMySQLを使います。

コマンドを実行するとパスワードが求められるので先ほどMYSQL_ROOT_PASSWORD=の後に入れた文字列を入力してログインしてください。

mysql -u root -p

中に入ったら「show databases;」などのコマンドでMySQLが正常に動いているか確認してみてください。

動いていることが確認できたらサンプルのデータベース、テーブルを作成し、その中にデータを打ち込んでみます。

以下のSQL文を順番に実行してみてください。

create database testdb;
use testdb;
create table test_table(id int, name varchar(50));
insert into test_table values (1, 'Taro');
insert into test_table values (2, 'jiro');
insert into test_table values (3, 'saburo');
select * from test_table;

最後のコマンドを実行した後に以下のような出力がされたらMySQLの準備は終わりになります。

+------+--------+
| id   | name   |
+------+--------+
|    1 | Taro   |
|    2 | jiro   |
|    3 | saburo |
+------+--------+

JDBCのダウンロード

ここからMySQLのJDBCをダウンロードすることができます。

Macを使っている場合は「Select Operating System:」のところは「Platform Independent」を選択してください。

その後表示が変化するのでTarもしくはZipのどちらかをダウンロードし、解凍してください。

Eclipsを起動し新規プロジェクトを作成してください。

筆者はTestMySQLというプロジェクト名にしました。

プロジェクト名を右クリックし、ビルド・パス、ビルド・パスの構成を選択してください。

その後タブが出てくるのでライブラリーを選択、外部JARの追加を押して先ほどダウンロードしたJDBCのjarファイルを選択して追加してください。

舞台は整いました。あとはプログラムを書いて実行してみましょう。

JavaでMySQLのコンテナに接続する

先ほど作成したtest_tableの中身を表示してみたいと思います。

TestMySQLプロジェクトにpackageがsampleのTestクラスを作成ました。

細かいコードの解説をしていると長くなってしまうので今回は例を示すだけで終わって、別の記事でJDBCドライバの使い方を解説していこうと思います。

package sample;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Test {

    public static void main(String[] args) {
        // TODO 自動生成されたメソッド・スタブ
        try (Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb", "root", "rootpass");
                Statement statment = con.createStatement();
                ResultSet res = statment.executeQuery("select * from test_table")){
            while(res.next()) {
                System.out.println(res.getInt("id") + ":" + res.getString("name"));
            }
        }catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

これを実行すると以下のように、テーブルに入れていた値を取得することができます。

1:Taro
2:jiro
3:saburo

\\今ならセール開催中!//

UdemyでSpring Bootを学ぶ!!

返金保証付き

プログラミング学習はUdemyがおすすめ

私はプログラミングの学習はUdemyで行うのが一番おすすめです。
Udemyでは動画講座でプログラミングなどのスキルを身につけることができます。
現役エンジニアがUdemyをオススメする理由は
・動画で好きなときに学べる
・一流の講師に学ぶことができる
・講師の方に質問ができる
・返金保証もある
・セールを頻繁に開催している
といったたくさんの理由があります。

現在Udemyではセールを開催しています!
通常時1万円から2万円前後の価格で講座が販売されていますが、セール時には1500円前後(ランチ代くらい)で一つの講座を購入することができます。
UdemyにはSpring BootでWebアプリの開発を学べる講座iconもあるので、Javaの基礎を動画で学んでみたい!という方はチェックしてみてください。

独学が不安な人へ

独学で学んでいく意志がある方にはUdemyなどで学習するのがおすすめですが、プログラミングを独学するにはそれなりにハードルがあります。

  • プログラミングで一度挫折した経験がある
  • 一人で学習する自信がないので、サポートが欲しい

という方にはプログラミングスクールを検討してみるのがおすすめです。

-Java
-