mysql—如何在不使用crudepository的情况下,将javaspring启动应用程序中定义的实体反映在数据库中

ubbxdtey  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(271)

我正在使用springboot和mysql构建一个web应用程序。我一直在关注视频指南系列信,但作者没有显示他如何建立数据库。
这是我一直在复制以下结果的视频:https://www.youtube.com/watch?v=kbfiel-fomq&index=7&list=pl2orqjm8zmz0k-s5ffr2qrwgupnaino0m
我使用mysql工作台创建了一个连接和模式。我完全按照他的方式配置了应用程序,但在他的视频中,应用程序中创建的实体在他的模式中显示为表,而我的没有。
我试着从他的github导入他的项目代码,并运行了它,但它仍然没有在我的模式中创建表。
application.properties配置如下:

spring.datasource.url = jdbc:mysql://localhost:3306/freshvotes
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.username=example_user
spring.datasource.password=password123

spring.jpa.database-platform=org.hibernate.dialect.MySQL57Dialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

spring.thymeleaf.cache=false

这是我创建的用户实体:

package com.freshvotes.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="users")
public class User {

private Long id;
private String username;
private String password;
private String name;

@Id @GeneratedValue (strategy=GenerationType.IDENTITY)
public Long getId() {
    return id;
}
public void setId(Long id) {
    this.id = id;
}
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

}

预期的结果是,只要我以spring boot app的形式运行app,实体就会在mysql localhost server中创建的模式中显示为表。
我得到的是没有显示在我的数据库服务器。不管我是否创建了一个模式。当我在服务器离线的情况下运行应用程序时,ide控制台中甚至没有出现错误。

wfauudbj

wfauudbj1#

所以我让它按计划运行。我之前在尝试使用maven构建项目时遇到了一个错误,并在pom.xml文件中添加了3个依赖项。使我的项目得以构建和运行,但没有更新数据库。
我只是再次注解了这些依赖项,但这次,它正确地构建并按预期运行。
如果您对它们感兴趣,现在可以使用以下注解依赖项:

<dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.1.4.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.2.3.Final</version>
    </dependency>
vmdwslir

vmdwslir2#

所以我假设你从这里下载并安装了mysql社区版的mysql。我没有关注或观看这个视频指南,但我可以在这里向您指出spring的官方文档。
一旦设置了db并为spring应用程序添加了一个用户,就需要获取连接字符串,就像在application.properties文件中所做的那样。我确实遇到了一些警告和失败,因为我的粗糙设置没有ssl所以添加 ?useSSL=false 连接到你的连接。
同时设置 spring.jpa.hibernate.ddl-auto=create-drop 创建或创建drop(我只使用createdrop进行测试),否则hibernate将无法创建表,只能更新它们。

相关问题