springboot根据实体类生成表的实现方法
作者:小船长的炒菜猫
本文介绍了如何通过SpringBoot工程引入SpringDataJPA,并通过实体类自动生成数据库表的过程,包括常见问题解决方法,感兴趣的可以了解一下
JPA:springboot -jpa:数据库的一系列的定义数据持久化的标准的体系
学习的目的是:
利用springboot实现对数据库的操作
第一步:添加springboot-data-jpa和数据库的依赖关系
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
第二步:编写yml文件的配置;
server: port: 8001 spring: application: name: jih-manage datasource: name: test url: jdbc:mysql://111.231.231.56/jih username: root password: root type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true
第三步:实体类中使用的注解:
@Entity 实体类的注解 @Id 映射到表格中id的属性 @Gernertervalue 添加其自增的属性;
第四步:启动项目是否生成表格
补充的知识点:
根据实体类生成数据库的表配置文件有俩种方式分别是yml和properties文件进行配置
yml文件:
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/facemap username: root password: root jpa: hibernate: ddl-auto: update show-sql: true
properties文件的写法:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/dbgirl?characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.jpa.show-sql= true spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect spring.jackson.serialization.indent_output=false
有更加详细介绍
首先我是通过maven创建了一个spring boot的工程,引入了Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表。
找了半天发现是一个配置的问题:
hibernate.ddl-auto节点的配置,这个配置有两种方式去配置,我使用的是通过properties文件去配置:
#DataSource Config spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:6033/data_service?characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.jpa.show-sql= true spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect spring.jackson.serialization.indent_output=false
hibernate.hbm2ddl.auto节点的值有几个create、create-drop、update、validate、none
- create:每次加载hibernate会自动创建表,以后启动会覆盖之前的表,所以这个值基本不用,严重会导致的数据的丢失。
- create-drop : 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除,下一次启动会重新创建。
- update:加载hibernate时根据实体类model创建数据库表,这是表名的依据是@Entity注解的值或者@Table注解的值,sessionFactory关闭表不会删除,且下一次启动会根据实体model更新结构或者有新的实体类会创建新的表。
- validate:启动时验证表的结构,不会创建表
- none:启动时不做任何操作
实体类的写法:
package com.example.demo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @Entity //实体类的注解 public class Girl { @Id //@id注意选择这个javax.persistence @GeneratedValue private Integer id; private String cupSize; private Integer age; public Girl() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getCupSize() { return cupSize; } public void setCupSize(String cupSize) { this.cupSize = cupSize; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
第五步:启动项目即可
到此这篇关于springboot根据实体类生成表的实现方法的文章就介绍到这了,更多相关springboot 实体类生成表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!