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;
相關文章
相關標籤/搜索