java—如何将硬编码数据添加到SpringBoot项目中,使其在运行后进入数据库

64jmpszr  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(126)

我为问题的题目道歉。我很清楚这个问题该怎么说。
一点背景知识:我对spring还比较陌生,所以有很多与spring相关的事情完全超出了我的想象。我最近开始了一个新的实践项目,在那里我创建了一个药品库存应用程序。到目前为止,我已经建立了我的模型和存储库。我决定实现一个postgresql数据库。
我在过去做过几个spring项目,如果我没记错的话,您可以硬编码一些为测试目的而创建的模型示例。因此,当您运行spring启动应用程序时,这些示例已经在数据库中了,因此我不必在事后通过pgadmin或sqlshell添加它。
我搞不清楚我到底应该在哪里“硬编码”这些信息,以及它是否是json格式。我想它应该放在inventoryapplication.java的主函数中,因为我的spring引导程序就是在这个函数中运行的,但是我不确定。
以下是我的一些文件,以便了解我的项目流程:
inventoryapplication.java文件

package com.oasis.inventory;
import com.oasis.inventory.model.*;
import com.oasis.inventory.repository.*;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class InventoryApplication {

    public static void main(String[] args) {
        SpringApplication.run(InventoryApplication.class, args);
    }
}

制药.java

package com.oasis.inventory.model;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;

@Entity
@Table(name = "pharmaceuticals")
public class Pharmaceutical {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "genericName")
    private String genericName;

    @Column(name = "brandNames")
    private ArrayList<String> brandNames;

    @Column(name = "strength" )
    private String strength;

    @Column(name = "quantity")
    private int quantity; 

    @ManyToMany(fetch = FetchType.LAZY,
            cascade = {
                CascadeType.PERSIST,
                CascadeType.MERGE
            })

    @JoinTable(name = "pharm_commonuses",
        joinColumns = { @JoinColumn(name = "pharmaceutical_id") },
        inverseJoinColumns = { @JoinColumn(name = "commonUse_id") })
    private Set<CommonUse> commonUses = new HashSet<>();

    public Pharmaceutical() {}

    public Pharmaceutical(String genericName, ArrayList<String> brandNames, String strength,
            int quantity) {
        this.genericName = genericName;
        this.brandNames = brandNames;
        this.strength = strength;
        this.quantity = quantity;
    }

    public String getGenericName() {
        return genericName;
    }

    public void setGenericName(String genericName) {
        this.genericName = genericName;
    }

    public ArrayList<String> getBrandNames() {
        return brandNames;
    }

    public void setBrandNames(ArrayList<String> brandNames) {
        this.brandNames = brandNames;
    }

    public String getStrength() {
        return strength;
    }

    public void setStrength(String strength) {
        this.strength = strength;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public long getId() {
        return id;
    }

    @Override
    public String toString() {
        return "Pharmaceutical [id=" + id + ", genericName=" + genericName + ", brandNames=" + brandNames
                + ", strength=" + strength + ", quantity=" + quantity + ", commonUses=" + commonUses + "]";
    }

    public Set<CommonUse> getCommonUses() {
        return commonUses;
    }

}

应用程序属性

server.port=8081

spring.datasource.initialization-mode=always
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=postgres
spring.datasource.password= sEcReT

spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect

# Hibernate ddl auto (create, create-drop, validate, update)

# For prod, change to validate

spring.jpa.hibernate.ddl-auto= update

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.oasis</groupId>
    <artifactId>inventory</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>inventory</name>
    <description>pharmaceuticals inventory management system</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题