idea根据实体类生成数据库表

在开发的时候,经常会遇到数据库表结构设计无法满足业务的需求,需要去改动数据库表,我们就需要去设计数据库的字段,然后又回来增加实体类里的字段,这样是不是很麻烦?今天我们就来解决这个问题,只需要直接修改我们定义的实体类,然后在我们启动项目时数据库就会自动对应我们实体类进行修改,大大减少了麻烦。

实现步骤

1.导入依赖

XML 复制代码
<!--   jpa 依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

2. yml配置文件

java 复制代码
spring:
  jpa:
    generate-ddl: true
    hibernate:
      ddl-auto: update

**jpa:hibernate:ddl-auto: update**是hibernate的配置属性,其主要作用是:自动创建、更新、验证数据库表结构。该参数的几种配置如下:

  1. create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
  2. create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
  3. update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
  4. validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

3.编写实体类

java 复制代码
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "admin")
public class Admin {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "user_name",length = 20, unique = true, nullable = false)
    private String username;
    @Column(name = "password",length = 20, nullable = false)
    private String password;
}

完成了上面的步骤后,只需要启动项目,我们就完成了根据实体类生成数据库表的操作,是不是很简单。

查看数据库,表已经生成,并且字段也是按照我们的要求定义的

如果我们需要新增字段,只需要在实体类中新增字段即可,比如,我在admin中增加了一个地址字段

然后重新启动项目

刚刚新定义的字段数据库添加了,对应的注释也有了。大功告成!

相关推荐
ChenWenKen8 分钟前
戴尔电脑安装centos7系统遇到的问题
数据库·电脑
gorgor在码农16 分钟前
redis 底层数据结构
java·数据库·redis
dgiij1 小时前
node.js中实现MySQL的增量备份
数据库·mysql·node.js
jamesge20101 小时前
如何构建SAAS项目
数据库
用户40709413135812 小时前
MySQL日志———Binlog日志
mysql
Mr数据杨2 小时前
解决整合Django与Jinja2兼容性的问题
数据库·django·sqlite
Adolf_19932 小时前
Django中 model 一对一 一对多 多对多关系 关联
数据库·django·sqlite
爱读源码的大都督3 小时前
PostgreSQL数据库中Sequence的使用详解
数据库·后端·架构
呆呆小雅7 小时前
C# 可空类型
数据库·oracle·c#