【发布时间】:2021-09-04 10:45:33
【问题描述】:
我是 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 + '\'' +
'}';
}
}
【问题讨论】:
-
在调用 API 时,您是否将
Content type正确设置为application/json? -
是的,我做到了。我认为问题可能与学生班级有关,因为 ID 是自动递增的。我之前插入了 ID,它工作正常。
-
还要检查你的插入查询字符串连接,我认为
)和VALUES之间应该有一个空格。 -
我试过了,还是不行。
标签: mysql spring spring-boot spring-jdbc