0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MyBatis

Posted at

概要

  • 業務でMyBatisを使用することがあったので理解度向上のために自宅でも色々触ってみる

環境

Springの起動準備

  1. プロジェクト作成
  2. コントローラの作成
  3. ビューの作成

プロジェクト作成

項目
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へアクセスすると下記の通りメッセージが表示されることを確認

image.png

データベースの用意

  • 今回は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-modealwaysとすることでアプリケーション開始時にデータベースの初期化を実施
  • consoleTRUEとすることでH2データベースのコンソール(localhost:8080/h2-console)の使用が可能になる

動作確認

  • Springを起動しlocalhost:8080/h2-consoleへアクセスすると下記の通りH2データベースのコンソール画面が表示されることを確認
  • Driver ClassJDBC URLUser NamePasswordの4つの項目がapplication.ymlで指定した値になっていることを確認しConnectを押下

image.png

  • USERSを押下するとUSERSテーブルのデータを全件取得するクエリが表示されるため、Runを押下し実行
  • data.sqlで追加したデータが表示されることを確認

image.png

トラブルシューティング

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?