springboot 根据实体类生成数据库中表

BaseEntity(公共实体)

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

@Data //生成set get 方法  须要引入lombok插件和jar
@MappedSuperclass
public class BaseEntity {
    @Id
    @GeneratedValue//主键生成策略
    private Integer id;          //id
    private Date createTime;     //建立时间
    private Integer createPaper;  //建立人
    private Date updateTime;     //更新时间
    private Integer updatePaper; //修改人
}

注意:java

1.标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,可是他的属性都将映射到其子类的数据库字段中。mysql

2.标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口。spring

配置文件application.yml

jpa:
    #数据库为mysql
    database: MYSQL
    hibernate:
      #生成为update方式
      ddl-auto: update
      show-sql: true

 

其中spring.jpa.hibernate.ddl-auto的属性有如下几种参数:sql

create:每次加载hibernate会自动建立表,之后启动会覆盖以前的表,因此这个值基本不用,严重会致使的数据的丢失。
create-drop : 每次加载hibernate时根据model类生成表,可是sessionFactory一关闭,表就自动删除,下一次启动会从新建立。
update:加载hibernate时根据实体类model建立数据库表,这是表名的依据是@Entity注解的值或者@Table注解的值,sessionFactory关闭表不会删除,且下一次启动会根据实体model更新结构或者有新的实体类会建立新的表。
validate:启动时验证表的结构,不会建立表数据库

none:启动时不作任何操做session


子类实体:

import javax.persistence.*;

@Data
@Entity
public class Account extends BaseEntity {


    private String accountName;
    private String account;
    private String bankOfDeposit;
    private Integer districtId;
    private String detailedAddress;
    private String creditCode;
    private String filing;
    private String phone;
    private String name;
相关文章
相关标签/搜索