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