我有一个spring boot后端应用程序,我正在寻找一种在MySQL数据库中插入初始化数据的方法,但只在每次创建表时。我使用data.sql做了这个,但每次服务器启动时都会插入数据。我希望我的问题很清楚。谢谢您的时间:))
答案 0 :(得分:0)
您可以通过Main
应用程序实施CommandLineRunner。
CommandLineRunner
有一个run(..)
,并在应用程序启动时调用它。
因此,您第一次可以使用此接口插入数据,并在数据插入数据库时,从主类中删除此接口。
答案 1 :(得分:0)
Database initialising仅用于嵌入式数据库。所以它或多或少地假定你必须在每次启动应用程序时初始化数据库。
答案 2 :(得分:0)
它在我不使用 Flyway 的情况下正常工作。
我有一个 Spring Boot 应用程序和 Mysql 数据库。我有多个 data.*.sql 文件。 application.properties 具有以下属性。
## To enable reading data from multiple files
spring.datasource.data = classpath:data.*.sql
# Initialize the datasource with available DDL and DML scripts
spring.datasource.initialization-mode=always
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update
其中一个data.*.sql文件:
INSERT IGNORE INTO complaintPriority(name) VALUES('EMERGENCY');
INSERT IGNORE INTO complaintPriority(name) VALUES('HIGH');
INSERT IGNORE INTO complaintPriority(name) VALUES('MEDIUM');
模型类的内容:
@Entity
@Access(value=AccessType.FIELD)
@Table(name = "complaintPriority", uniqueConstraints = {
@UniqueConstraint(columnNames = {
"complaintPriorityId"
})
})
public class ComplaintPriority {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long complaintPriorityId;
// Other variables and methods