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; }