DB接続
前回は環境構築をして、HelloWorldを表示するところまで実施しました。今回はDB接続をして、新規登録機能を完成させることを目標に取り組もうと思います。
DB関連の設定
MySQL8.0を起動
前回作成したMySQLのコンテナを起動する。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be628a63358d mysql:8.0 "docker-entrypoint.s…" 22 hours ago Exited (0) 16 seconds ago mygroupware_db_1
$ docker start be628a63358d
be628a63358d
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be628a63358d mysql:8.0 "docker-entrypoint.s…" 22 hours ago Up 9 seconds 33060/tcp, 0.0.0.0:3304->3306/tcp mygroupware_db_1
ユーザーテーブル作成
SQLクライアントツールでMySQLに接続して、以下のデータベースとテーブルを作成。自分はworkbenchを使ってる。
--データベース作成
CREATE DATABASE mygroupwere;
--testユーザにmygroupwere内での権限付与。次回からはテストユーザで作業する。
GRANT ALL ON mygroupwere.* TO test;
--ユーザーテーブルを作成する。idとupdated_atは自動で設定。
USE mygroupwere;
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TEXT NOT NULL,
password TEXT NOT NULL,
role TEXT NOT NULL,
updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)DEFAULT CHARACTER SET=utf8;
application.propertiesの編集
application.properties
spring.datasource.url=jdbc:mysql://localhost:3304/mygroupwere
spring.datasource.username=test
spring.datasource.password=test
spring.datasource.driverClassName=com.mysql.jdbc.Driver
build.gradleを編集
mvnrepositoryから、mysqlを検索して、以下のように依存関係を追加。
build.gradle
plugins {
id 'org.springframework.boot' version '2.2.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}
group = 'rsrepo.groupware'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
implementation 'mysql:mysql-connector-java' // 追加
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
ユーザーモデルを作成
User.java
package パッケージ名.プロジェクト名.domain.model.entity;
import java.util.Date;
import lombok.Data;
@Data
public class User {
private String id; // ID
private String name; // ユーザー名
private String password; // パスワード
private String role; // ロール
private Date updated_at; // 更新日時
}
いい時間になってしまったので、今日はここまでで終了!
次回はDB接続の続きから始めます。
SpringBootでグループウェアの開発①〜環境構築〜
SpringBootでグループウェアの開発③〜DB接続の続き〜
GitHub:MyGroupware