今日目標,安裝資料庫、設定資料庫連線資訊、建立 Model。
小弟我本來就有 XAMPP 所以資料庫就用 XAMPP 的 MySQL,如果你比較習慣 MySQL Workbench 那就繼續用吧!
XAMPP是一個把Apache網頁伺服器與PHP、Perl及MariaDB集合在一起的安裝包,允許使用者可以在自己的電腦上輕易的建立網頁伺服器。
小弟只是為了用 XAMPP 提供的 MySQL 以及其介面 phpmyadmin (比較偏愛這個介面)而已,如同前一天提到的,我們不需要自己裝 Web Server 因為 Spring Boot 框架就有附。
src/main/resources/application.properties
,並加入:
# Database settings
spring.datasource.url = jdbc:mysql://localhost:3306/cards
spring.datasource.username = root
spring.datasource.password =
spring.jpa.hibernate.ddl-auto = update
pom.xml
,並將下方加入 <dependencies> </dependencies>
之間:
<!-- sql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
pom.xml
的 dependencies 的配置是
我們要來建立我們的 user 資料表,預期欄位有 id、username、email、password
package com.example.user;
import javax.persistence.*;
@Entity
@Table(name = "user")
public class UserModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(unique = true)
private String username;
@Column(unique = true)
private String email;
@Column
private String password;
}
@Entity
:宣告為 Entity 類型,並映射至一個資料表@Table
:映射資料表的名稱,預設是使用 class 名稱作為資料表名稱
@Id
:宣告為主鍵(Primary Key)@GeneratedValue
:主鍵的生成方式
@Column
:欄位,可以使用 name、length、nullable、unique... 等客製化package com.example.user;
import javax.persistence.*;
@Entity
@Table(name = "user")
public class UserModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(unique = true)
private String username;
@Column(unique = true)
private String email;
@Column
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@EntityScan
):
package com.example.cards;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
@SpringBootApplication
@EntityScan({
"com.example",
})
public class CardsApplication {
public static void main(String[] args) {
SpringApplication.run(CardsApplication.class, args);
}
}
@EntityScan
:會去掃描這個路徑底下的所有 package,並自動幫有使用 @Entity
註解的 class 建立資料表在 Java 中,以 @ 開頭的都稱為註解,做的事情很簡單,就是有人幫你寫好了一些功能、驗證等,只要把註解加上去就會根據註解的聲明範圍(class, method, variable, etc.)自動處理並注入,類似於你去呼叫別人的函式,這麼做能提升可讀性和重用性。