【エンジニア向け】SpringBoot + Mybatis + Postgresの環境構築を行う

今回は、SpringBootでDBアクセスするときにMybatisを利用する方法を紹介します。

前提としては、SpringBootによるプロジェクト作成ができている必要があります、まだSpringBootプロジェクトを作れていない人は、下記記事をご確認ください。

【エンジニア向け】SpringBootでWebアプリのプロジェクトを作ろう

また、Postgresの環境構築が完了してない方は下記記事をご確認ください。

【エンジニア向け】Macbook + docker-composeでpostgresを動かす

もっとSpringの勉強をしたい方は、以下の本がオススメです。

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発 Spring FrameworkによるJavaアプ [ 株式会社NTTデータ ]

価格:4,400円
(2021/4/28 15:45時点)
感想(2件)

SpringBoot + Mybatis + Postgresの環境構築を行う

  1. 前提: アーキテクチャの説明
  2. Mybatisのライブラリ追加
  3. Posrgresのデータ準備
  4. SpringBootプロジェクトでデータベースに接続
  5. Mybatisでデータを取得

1. 前提: アーキテクチャの説明

今回の記事で紹介する各アーキテクチャは以下の通りです。

アーキテクチャ選定技術/バージョン
Javaのバージョンjdk11
ビルドタイプGradle
DBPostgres12
org.springframework.boot2.4.5
io.spring.dependency-management1.0.11.RELEASE

皆さんは下記構成を参考にしつつ、各自の環境で適切なMybatisのバージョンを選ぶ必要があります。

2. Mybatisのライブラリ追加

アーキテクチャを確認したら、次にMybatisのライブラリを追加します。

「build.gradle」を開き、以下のライブラリを追加します。

dependencies {
  compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.3")
}

Mybatisのバージョンが、自分のSpringBootプロジェクトのバージョンに適しているかどうかは「mybatis.org/」というサイトで確認可能です、URLを載せておくので確認してみてください。

mybatis-spring-boot-autoconfigure

「build.gradle」に追加したら、ビルドしてMybatisを追加しましょう。

プロジェクト直下で
$ ./gradlew build

無事インストールできていればOKです。

3. Posrgresのデータ準備

続いて、Postgres内に、動作確認用のテーブルとレコードを作っていきましょう

まずはdocker内に入り、postgresに接続します。

postgresの接続方法や、基本的なDBのCRUD方法が分からない方は以下の記事を参考にしてください。


【エンジニア初級】PostgresでCRUDのSQL操作を覚えよう

今回は、以下のようなDB、テーブル、レコードを用意しました。

Database名testdb
Table名employee
レコード3件

実際のデータは以下のようなイメージです。

postgres=# \c testdb
You are now connected to database "testdb" as user "postgres".

testdb=# \d
          List of relations
 Schema |   Name   | Type  |  Owner
--------+----------+-------+----------
 public | employee | table | postgres
(1 row)

testdb=# select * from employee;
 id |   name   |    job
----+----------+------------
  1 | 田中太郎 | エンジニア
  2 | 鈴木花子 | デザイナー
  3 | 山下哲也 | 営業
(3 rows)

【エンジニア初級】PostgresでCRUDのSQL操作を覚えよう

で試しに作ったデータベース、テーブルをそのまま流用しています。

4. SpringBootプロジェクトでデータベースに接続

SpringBootを利用することで多くの便利なライブラリが最初からSpringBoot内に同梱されます。

データベースに接続する際、本来であればDataSourceというクラスを用意してDBへの接続を行う必要がありますが、SpringBootの場合、最初からDataSourceが用意されており、設定ファイルにDBの接続先を記載することで接続可能になります。

では、実際に接続先の情報を「src / main / resources」配下の「application.properties」に記載してみましょう。

# PostgreSQLの接続先 - DB名、ユーザー名、パスワードはご自身のものに置き換えてください
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/DB名
spring.datasource.username=ユーザー名
spring.datasource.password=パスワード

今回の記事では、DB名、ユーザー名を以下のように設定しました。

(今回は簡単に試すためDocker構築時に初期で作られたpostgresユーザーを使ってますが、実プロジェクトではpostgres以外ユーザーできちんとパスワードを設定しましょう)

# PostgreSQLの接続先
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=postgres
spring.datasource.password=example

更に、postgresに接続するために、「build.gradle」にpostgresのJDBCドライバを追加します。

runtimeOnly 'org.postgresql:postgresql'

Gradleをビルドし、SpringBootを立ち上げてみましょう。

プロジェクト直下で
$ ./gradlew build

プロジェクト直下で
$ ./gradlew bootRun

エラーが発生していなければ接続の設定は完了です!

5. Mybatisでデータを取得

最後に、Postgresに存在するデータをMybatisを使って取得してみましょう。

今回は、DBに接続して画面に表示するところまでを試します。

まずはMybatisを使ってデータを取得します。

「SampleRepository.java」というファイルを作り、Mybatisで接続するためのインターフェースを記載します。

package com.example.demo;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface SampleRepository {
    @Select("SELECT name FROM employee;")
    List<String> findAllEmployeeNames();
}

次に「SampleController.java」というクラスを作成し、上記のRepositoryを呼び出して、結果を画面に出力してみましょう。

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.stream.Collectors;

@RestController
public class SampleController {

    @Autowired
    private SampleRepository sampleRepository;

    @GetMapping("/displayNames")
    public String displayNames() {
        List<String> names = this.sampleRepository.findAllEmployeeNames();
        return names.stream().collect(Collectors.joining(","));
    }
}

最後に、以下のURLにアクセスして名前が表示されていればOKです。

http://localhost:8080/displayNames

同じように名前がカンマ区切りで表示されていれば成功です。

この記事で作成したプロジェクトの最終構成は以下の通りです。

src
 |-main
    |-java
    |   |-com.example.demo
    |            |-DemoApplication
    |            |-SampleController
    |            |-SampleRepository
    |
    |-resources
        |-application.properties

===============

以上、SpringBoot + Mybatis + Postgresの環境構築を行う方法について解説してみました。

この情報が皆さんの人生のお役に立てれば幸いです。

エンジニアとして日本のITリテラシーを高めていきたいと共感して頂いた人は、是非このブログの拡散とyoutubeの方も見ていただけると嬉しいです。

記事を最後まで見ていただきありがとうございました。

執筆者: hiroエンジニア

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です