使用 JPA 通過 Model 直接生成數據庫表


1、創建 Model 類

public class BannerModel {
    private long id;
    private String name;
    private String description;
    private String img;
    private String title;
}
2、創建代碼與數據庫的連接
通過配置文件 application.properties 文件中,也可以通過 yml 文件進行配置;但是建議寫在 config 目錄下的環境配置文件中,也就是 application-dev.yml 文件中。
 
2.1 pom 文件中引入 mysql 和 jpa 的依賴
<!-- JPA 依賴 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
  <groupId>javax.persistence</groupId>
  <artifactId>javax.persistence-api</artifactId>
  <version>2.2</version>
</dependency>

 <!-- MySQL依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

2.2 環境配置文件中添加 spring datasource 配置

spring:
  datasource:
    url: jdbc://localhsot:3306/db_name?characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: root

2.3 實體類上添加 @Entity 注解

@Entity
public class BannerModel {
    @Id
    private long id;

    @Column(length=16)
    private String name;

    @Transient
    private String description;
    private String img;
    private String title;
}

2.4 添加 JPA 配置(在總配置文件 application.yml 中)

spring:
  profiles:
    active: dev
  jpa:
    hibernate:
      ddl-auto: update
ddl-auto: 如果配置 crete_drop 代表每次都會刪除表重新建立一張表,如果表中數據則必須要確認是否要刪除,如果不刪除表就使用 update
 
2.5 指定表與表之間的外鍵
由於 JPA 生成一對多關系的表的時候,並不知道這些表之間是如何關聯的,因此它只能生成一張關聯表,如果我們不想要生成這張表的話,就需要明確這兩張表之間的外鍵關系。
 
@GeneratedValue(strategy = GenerationType.IDENTITY) 代表主鍵是自增
@Transient 表示忽略生成變量到數據庫
@Column(length=20) 限制數據庫中字段長度
@OneToMany 表示Banner 表對BannerItem是一對多關系
@JoinColumn(name="bannerId") 表示該字段是兩張表的外鍵關聯
@Entity
@Table(name = "banner")
public class BannerModule {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(length = 32)
    private String name;

    @Transient
    private String description;
    private String img;
    private String title;

    @OneToMany
    @JoinColumn(name = "bannerId")
    private List<BannerItem> items;
}
@Entity
public class BannerItem {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String img;
    private String keyword;
    private short type;
    private String name;

    private Long bannerId;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM