背景:
一个实验室项目,之前数据库都在跑在实验室的服务器上面,突然服务器烧了,最新的数据库表本地没有备份(表结构已经大动过),然后这个项目后面我参与了进来,首先就需要更改数据库表(库表字段非常多),然后就想到了之前使用过的JPA,可以根据实体类生成数据库表
1.创建项目
新建springboot项目并导入以下dependency
分别是mysql和JPA
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2.配置application
application.yml中配置JPA和Mysql连接:
url中的数据库需要提前建立好
server:
port: 8847
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/jpasqltest?useSSL=false&useUnicode=true&characterEncoding=UTF-8&severTimezone=GMT%2B8&allowPublicKeyRetrieval=true
username: mysql用户名(注意修改为自己的mysql用户名)
password: mysql密码 (注意修改为自己的mysql密码)
jpa:
hibernate:
ddl-auto: update
show-sql: true
其中ddl-auto的配置为:
- create----每次运行该程序,没有表格会新建表格,表内有数据会清空
- create----每次运行该程序,没有表格会新建表格,表内有数据会清空
- create-drop----每次程序结束的时候会清空表
- update----每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
- validate----运行程序会校验数据与数据库的字段类型是否相同,不同会报错
3.撰写实体类
重要注解:
@Entity //标识为一个实体类,自动建表必须添加,且根据实体类字段生成数据库表
@Table(name="note") //设置生成的表明,与@Entity配合使用,不条件默认表名为实体类名
@Id //标识此键为主键
@GeneratedValue(strategy= GenerationType.IDENTITY) //主键为自增
注意:实体类中命名为驼峰式的话,数据库表字段自动命名为下划线式 比如:createTime => create_time
其他注解:
4.扫描注解并启动
@EntityScan(basePackages = {"com.sgx.jpatest"}) //扫描entity的存放位置
@SpringBootApplication
public class JpaTestApplication {
public static void main(String[] args) {
SpringApplication.run(JpaTestApplication.class, args);
}
}
注意:entity需要再同意文件夹下
最后启动Application后自动生成表: