Branched Evolution

Competitive Programming in Python

Spring Boot で Entity からテーブルを自動生成するのに必要な設定

言語は Kotlin,データベースは MySQL を使う.

ソースコード https://github.com/fujihiraryo/kotlin-api/tree/test/database

Spring Initializr で以下の設定で雛形を作った.

https://user-images.githubusercontent.com/49140016/90907876-8f1dee80-e40e-11ea-990b-e8bfd9e3352d.png

ローカルで MySQL が起動していて,

usename: root
password: 

でログインでき,demo という名前のデータベースがあることを前提とする.
なければ以下のように作成する.

create database if not exists demo;

build.gradle.kts

dependencies に以下を追加する.

implementation("org.springframework.boot:spring-boot-starter-data-jpa")
runtimeOnly("mysql:mysql-connector-java")

application.properties

DB の接続情報を記述する.

spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=

User.kt

ここでは user という名前のテーブルを作成する.

package com.example.demo

import javax.persistence.*

@Entity
data class User(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Int = 0,
    var name: String = ""
)

この状態で,ターミナルから

gradle bootRun

で起動すると,demo データベースの下に user テーブルが作成されている.

mysql
mysql> use demo;
mysql> show columns from user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)