使用 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