mysql - Spring JDBC 无法插入
问题描述
我是 SpringBoot 的新手,我正在使用 SpringBoot 和 JDBC 来制作 API。INSERT 无法正常工作,我已将 ID 设为唯一并自动递增。在我插入 ID 之前,它没有引起任何问题。我使用 MySql 作为数据库。
我在 POST 中使用的 JSON 是:
{
"name":"Name",
"email":"namegmail.com",
"dob":"2000-04-09",
"age":21
}
我收到此错误。
{
"timestamp": "2021-06-20T13:10:16.925+00:00",
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'application/octet-stream' not supported",
"path": "/api/v1/NewStudent"
}
控制器
@RestController
@RequestMapping(path = "api/v1/")
public class StudentController {
private StudentService studentService;
@Autowired
public StudentController(StudentService service){
this.studentService=service;
}
@GetMapping("/home")
public String getHome(){
return "Hey Welcome to Home";
}
@PostMapping("/NewStudent")
public void registerNewStudent(@RequestBody StudentClass studentClass){
studentService.addNewStudent(studentClass);
}
@GetMapping("/student/{id}")
public StudentClass getStudentSearch(@PathVariable(value = "id") Long userId){
return studentService.getStudentSelect(userId);
}
@GetMapping("/AllStudents")
public List<StudentClass> getAllStudents(){
return studentService.getAllStudents();
}
}
学生道
public class StudentDaoClass implements StudentDao{
@Autowired
private JdbcTemplate jdbctemplate;
private List<StudentClass> selectAll;
@Override
public int insert(StudentClass student) {
String query="INSERT INTO Student(std_name,std_email,std_dob,std_age)" +
"VALUES(?,?,?,?)";
int res=this.jdbctemplate.update(query,student.getName(),student.getEmail(),student.getDob(),student.getId());
return res;
}
@Override
public StudentClass selectStudent(Long id) {
String query="SELECT * FROM Student WHERE std_id=?";
RowMapper<StudentClass> rowMapper=new RowMapperClass();
StudentClass studentClass=this.jdbctemplate.queryForObject(query,rowMapper,id);
return studentClass;
}
@Override
public List<StudentClass> selectAllStudents() {
String query="SELECT * FROM Student";
selectAll=this.jdbctemplate.query(query,new RowMapperClass());
return selectAll;
}
public JdbcTemplate getJdbctemplate() {
return jdbctemplate;
}
public void setJdbctemplate(JdbcTemplate jdbctemplate) {
this.jdbctemplate = jdbctemplate;
}
}
学生班
public class StudentClass {
@Id
private Long id;
private String name;
private LocalDate dob;
private Integer age;
private String email;
public StudentClass() {
}
public StudentClass(String name, String email,LocalDate dob ,Integer age) {
this.name = name;
this.dob = dob;
this.age = age;
this.email = email;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public LocalDate getDob() {
return dob;
}
public void setDob(LocalDate dob) {
this.dob = dob;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "StudentClass{" +
"id=" + id +
", name='" + name + '\'' +
", dob=" + dob +
", age=" + age +
", email='" + email + '\'' +
'}';
}
}
解决方案
我认为您的休息电话甚至没有到达 jdbc 部分,因为您的休息请求存在问题。我相信您没有正确设置内容类型。尝试进行以下更改并查看。
发送请求时请将'Content-Type'
header 属性设置为'application/json'
并增强您的以下处理程序方法所消耗的内容。
@PostMapping(path="/NewStudent", consumes="application/json")
public void registerNewStudent(@RequestBody StudentClass studentClass){
studentService.addNewStudent(studentClass);
}
尝试调试您的应用程序。您的休息电话应该到达您的上述处理程序方法。
推荐阅读
- php - Wordpress PHP错误标签换行和css样式?
- java - 在哪里可以找到并安装 org.osgi.framework 包?
- javascript - 如果代码进入 if 时钟而不是 else 块,则内部错误条件后的事件
- sql - 每秒将列从 excel 发送到 MSSQL 5 次
- excel - 将各种excel中的同名表合并为一张
- tableau-api - 如何在画面中比较当前和去年期间的 3 个度量
- c++ - 以二进制格式写入 vtk 文件
- python - 避免 for 循环创建数组
- javascript - TinyMCE 5:大写的自定义工具栏按钮
- chart.js - 更新通过 ajax 通过 PHP、MySQL 调用的图表数据