今回は、SpringBootでDBアクセスするときにMybatisを利用する方法を紹介します。
前提としては、SpringBootによるプロジェクト作成ができている必要があります、まだSpringBootプロジェクトを作れていない人は、下記記事をご確認ください。
【エンジニア向け】SpringBootでWebアプリのプロジェクトを作ろう
また、Postgresの環境構築が完了してない方は下記記事をご確認ください。
【エンジニア向け】Macbook + docker-composeでpostgresを動かす
もっとSpringの勉強をしたい方は、以下の本がオススメです。
Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発 Spring FrameworkによるJavaアプ [ 株式会社NTTデータ ] 価格:4,400円 |
SpringBoot + Mybatis + Postgresの環境構築を行う
- 前提: アーキテクチャの説明
- Mybatisのライブラリ追加
- Posrgresのデータ準備
- SpringBootプロジェクトでデータベースに接続
- Mybatisでデータを取得
1. 前提: アーキテクチャの説明
今回の記事で紹介する各アーキテクチャは以下の通りです。
アーキテクチャ | 選定技術/バージョン |
---|---|
Javaのバージョン | jdk11 |
ビルドタイプ | Gradle |
DB | Postgres12 |
org.springframework.boot | 2.4.5 |
io.spring.dependency-management | 1.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エンジニア