如何在SpringBoot2启动时自动创建表、插入数据

本文介绍如何在SpringBoot2中实现数据库表的自动生成、自动插入数据及自定义建表语句创建表的方法。通过使用@Entity注解、data.sql和schema.sql文件配合相应配置,可轻松实现数据库操作自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、springboot2中如何根据实体类自动生成表

只需在类上添加@Entity注解。spring boot启动时会自动生成user表(当然,数据库还得自己先创建)

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.Id;
import java.io.Serializable;

/**
 * @author chushiyan
 * @email Y2h1c2hpeWFuMDQxNUAxNjMuY29t(base64)
 * @description
 */
@Data
@Entity
public class User implements Serializable {

    @Id
    private String id;

    private String name;
}

对应的application.yml:

server:
  port: 10000

spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
    username: root
    password: root
  jpa:
    database: MySQL
    show-sql: true
    generate-ddl: true

二、springboot2启动时如何向数据库自动插入数据

1、首先,在resources目录下创建data.sql文件,例如:

INSERT INTO user (id,name) VALUES ('0','chushiyan');
INSERT INTO user (id,name) VALUES ('1','zhangsan');
INSERT INTO user (id,name) VALUES ('2','lisi');
INSERT INTO user (id,name) VALUES ('3','wangwu');

springboot启动时,会从classpath下读取该文件,用来向数据库的表插入数据。

2、然后,配置

spring.jpa.hibernate.ddl-auto=create-drop # 或者create
spring.datasource.initialization-mode=always

注:spring.jpa.hibernate.ddl-auto=create 或者 create-drop会先删除已存在的表,主要用于测试。

完整application.yml:

server:
  port: 10000
spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
    username: root
    password: root
    initialization-mode: always
  jpa:
    database: MySQL
    show-sql: true
    generate-ddl: true
    hibernate:
      ddl-auto: create-drop 

三、如何让SpringBoot2根据我们自定义的建表语句创建数据库表

1、首先,在resources目录下创建schema.sql文件,例如:

CREATE TABLE user (
    id   VARCHAR(128)      NOT NULL ,
    name VARCHAR(32)       NOT NULL,
    PRIMARY KEY (id)
);

springboot启动时,会从classpath下读取该文件,用来创建数据库表。

2、然后,配置:

spring.jpa.hibernate.ddl-auto=none

完整application.yml:

server:
  port: 10000
spring:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
    username: root
    password: root
    initialization-mode: always
  jpa:
    database: MySQL
    show-sql: true
    generate-ddl: true
    hibernate:
      ddl-auto: none 

验证是否使用了schema.sql文件创建表,查询数据库:

mysql> show create table user;
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                  |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (
  `id` varchar(128) NOT NULL,
  `name` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

mysql>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值