概要
- 業務でMyBatisを使用することがあったので理解度向上のために自宅でも色々触ってみる
環境
Springの起動準備
- プロジェクト作成
- コントローラの作成
- ビューの作成
プロジェクト作成
項目 | 値 |
---|---|
Project Type | Gradle |
Springバージョン | 3.4.0 |
プロジェクト名 | mybatis |
Javaバージョン | 17 |
Spring依存関係 | Spring Web Spring Boot DevTools MyBatis Framework Thymeleaf Lombok H2 Database |
build.gradle
※執筆時点では少しいじってしまっていたので少し異なるかもしれないけどだいたいこんな感じ
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.0'
id 'io.spring.dependency-management' version '1.1.6'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.4'
runtimeOnly 'com.h2database:h2'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.4'
}
コントローラの作成
-
src/main/java/com/example/mybatis
配下にcontroller
パッケージを作成 -
MybatisController
クラスを作成
MybatisController.java
package com.example.mybatis.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MybatisController {
@GetMapping("/mybatis")
public String allUsers() {
return "index";
}
}
- コントローラのため
@Controller
を付与 -
@Getmapping
によりlocalhost:8080/mybatis
へアクセスした際にallUsers
メソッドを呼び出し、index.html
を呼び出すよう指定
ビューの作成
- ビューとなるHTMLを、
src/main/resources/template
配下にindex.html
を作成
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>MyBatis学習ページ</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/css/bootstrap.min.css">
</head>
<body>
<h1>MyBatis学習ページ</h1>
<p>これから学習していきます</p>
</body>
</html>
-
html
タグでThymeleafをインポート - いったん画面表示できることを確認するため仮でメッセージを用意
application.yml
-
prefix
でThymeleafを使用するHTMLが格納されているディレクトリを指定
application.yml
spring:
application:
name: mybatis
thymeleaf:
prefix: file:src/main/resources/templates/
拡張子は.propertiesでも.ymlでもどちらでも問題ないため好みでOK
動作確認
- Springを起動しlocalhost:8080/mybatisへアクセスすると下記の通りメッセージが表示されることを確認
データベースの用意
- 今回はJVM内で起動するインメモリデータベースであるH2 Databaseを使用
テーブル作成
-
src/main/resources
配下にschema.sql
を作成し今回使用するテーブルを作成するDDLを記述
schema.sql
create table USERS (
id NUMBER(3) not NULL PRIMARY KEY,
username VARCHAR2(20) not NULL,
age NUMBER(3),
address VARCHAR2(20)
);
データ準備
-
src/main/resources
配下にdata.sql
を作成し、上記で作成したテーブルにデータを追加
data.sql
INSERT INTO users(id, username, age, address) VALUES(1, 'John', 18, 'America');
INSERT INTO users(id, username, age, address) VALUES(2, 'Pole', 20, 'Itary');
INSERT INTO users(id, username, address) VALUES(3, 'Daisuke', 'Japan');
INSERT INTO users(id, username, age) VALUES(4, 'Mike', 17);
application.yml
-
application.yml
内にデータベース関連の記述を追記
application.yml
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:users;DB_CLOSE_ON_EXIT=TRUE
username: yamashun
password:
initialization-mode: always
h2:
console:
enabled: true
-
driver-class-name
でH2データベースを使用することを宣言 -
jdbc:h2:mem:<テーブル名>
で今回使用するテーブル名を指定 -
username
は任意の値を指定 -
password
も任意の値を指定 -
initialization-mode
をalways
とすることでアプリケーション開始時にデータベースの初期化を実施 -
console
をTRUE
とすることでH2データベースのコンソール(localhost:8080/h2-console)の使用が可能になる
動作確認
- Springを起動しlocalhost:8080/h2-consoleへアクセスすると下記の通りH2データベースのコンソール画面が表示されることを確認
-
Driver Class
、JDBC URL
、User Name
、Password
の4つの項目がapplication.yml
で指定した値になっていることを確認しConnectを押下
- USERSを押下すると
USERS
テーブルのデータを全件取得するクエリが表示されるため、Runを押下し実行 -
data.sql
で追加したデータが表示されることを確認