java - 我们如何使用spring boot将jsp文件中的表单数据保存到数据库中?
问题描述
我正在创建一个 Spring Boot API,它基本上要求用户创建一个帐户。帐户详细信息显示在表格上。我想从表单中获取详细信息并将其保存到数据库(MYSQL)。
模型类如下:
@Table(name = "user")
public class User {
@Id
@Column(name = "ID")
private int ID;
@Column(name = "Fname")
private String fName;
@Column(name = "Lname")
private String lName;
@Column(name = "dob")
private String dob;
@Column(name = "email")
private String email;
@Column(name = "pWord")
private String pWord;
}
控制器类如下:
public class MController {
@Autowired
private UserRepository userRepository;
@PostMapping("/successSignUp")
public String dataToDB(@ModelAttribute("User") User formData, Model model) {
userRepository.save(new User(formData.getFname(), formData.getLname(), formData.getDob(), formData.getEmail(), formData.getPassword()));
model.addAttribute("user", new User());
return "welcomeUser";
}
当我执行此代码时,我收到以下错误:
java.sql.SQLSyntaxErrorException: Unknown column 'p_word' in 'field list'
我在这里做错了什么?提前致谢。
解决方案
Spring框架在内部将骆驼案改为蛇案。
这是 Spring Boot 命名策略的一部分:我们可以覆盖这些值,但默认情况下,它们将:
- 将骆驼案改为蛇案
- 用下划线替换点
- 小写表名
您可以尝试将列名更新为 pword 而不是 pWord 吗?
@Column(name = "pword")
private String pWord;
如果您使用“pWord”,它将被视为 p_word。请将列名更新为“pword”并尝试。
例子:
@Entity
public class Account {
@Id
private Long id;
private String defaultEmail;
}
And then turn on some SQL debugging in our properties file:
hibernate.show_sql: true
At startup, we'll see the following create statement in our logs:
Hibernate: create table account (id bigint not null, default_email varchar(255))
推荐阅读
- math - 折扣率,公式
- javascript - 等到从 MongoDB React JS 获取数据
- python - 刮板自动退出
- javascript - 使用 Javascript 的嵌套数组循环在所有象限中生成和排序 (0,0) 附近的笛卡尔坐标
- linux - 从 Google VPS 恢复已删除的文件夹
- webdriver - 如何在 Python 中解析 webdriver 实例?
- c++ - std::basic_stream 不支持 Xcode 中的 char16_t(OS X 目标)
- bash - ffmpeg/bash - 多个输出的映射代码
- r - 在部署到 shinyapps.io 的 Shiny 应用程序中使用 readClipboard() 时出现问题
- excel - 如何调整事件 SelectionChange 代码以在事件计算中工作?