在springboot中,编写表对应的实体类,可以实现自动建表。而不需要自己到数据库中创建表。
条件如下:
1.在pom.xml中添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
2.在application.properties中添加对应的配置:前两部分分别是数据库的连接配置和连接池的配置。
spring.jpa.properties.hibernate.hbm2ddl.auto=update 这句才是实现自动建表的语句。该属性在第一次会创建表,而之后每次会更新数据表中的信息。
除了update 还有其他值:create-drop:表示当jpa应用时会自动建表,而当应用结束后会删除表。 create:在每次应用启动的时候都会创建表,但是会删除之前的。
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=TS1374206028
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.tomcat.max-active=20
spring.datasource.dbcp2.max-idle=8
spring.datasource.dbcp2.min-idle=8
spring.datasource.dbcp2.initial-size=10
spring.jpa.properties.hibernate.hbm2ddl.auto=update
3.在创建的实体类中要添加相应注解注解,意思是告诉springboot这是要创建表的实体类,才会创建在实体类上加上注解
@Entity
代码如下:我创建的是test表,其中有id name sex 和createAt四个字段。然后点击主程序进行运行
package com.example.demo.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Test implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String sex;
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getCreateAt() {
return createAt;
}
public void setCreateAt(Date createAt) {
this.createAt = createAt;
}
private Date createAt;
}
4.运行成功后会在数据库中看到该表。
5.如果你在运行中出现以下错误代码:
则是没有设置主键,需要设置主键才可以。这时注意仔细看我上面的代码:在id的上面有一个注解:@Id,意思是这个字段为id主键。