java - 如何在不使用 CrudRepository 的情况下将 java spring boot 应用程序中定义的实体反映在数据库中
问题描述
我正在使用 spring boot 和 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 应用程序运行,实体将显示为我在 mySQL 本地主机服务器中创建的模式中的表。
我得到的是我的数据库服务器中没有显示任何内容。无论我是否创建了架构。当我在服务器脱机的情况下运行应用程序时,我什至没有在 IDE 控制台中收到错误消息。
解决方案
所以我假设你确实从这里下载并安装了 Windows 上的 MySQL Community 版本的 MySQl 。我没有关注或观看此视频指南,但我可能会在此处为您指出 Spring 官方文档。
设置好数据库并为 Spring 应用程序添加用户后,您将需要获取连接字符串,就像您在 application.properties 文件中所做的那样。由于我没有 SSL 的粗略设置,我确实遇到了一些警告和失败,因此请添加?useSSL=false
到您的连接中。
还要将您的设置spring.jpa.hibernate.ddl-auto=create-drop
为 create 或 create-drop(我使用 create-drop 仅用于测试),否则 Hibernate 将无法创建表,只能更新它们。
推荐阅读
- django - 带有 Django REST 框架 json API 的 Ember JSONAPI 适配器
- java - JavaFX - 元素未显示
- java - java Jsoup问题我如何按单词拆分?
- python - 用不同的字符串替换文件以在python中进行测试
- java - 数据库助手类?
- matlab - 如何在幅度和相位方面在频域进行傅立叶变换后计算传递函数并绘制它?
- c# - 为什么这些记录以看似随机的顺序写入数据库?
- python - 如何在pyqt5中从对话框按钮获取值到主窗口tablewidget?
- c# - 如何将列表中的索引与 for
- python - Wagtail 管理员 - 玩 url