Spring JDBC 无法插入
Spring JDBC Unable to insert
我是 SpringBoot 的新手,我正在使用带有 JDBC 的 SpringBoot 来制作 API。 INSERT 无法正常工作,我已将 ID 设置为唯一并自动增加它。在我插入 ID 之前,它导致没有 problems.I 正在使用 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();
}
}
StudentDao
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 。尝试进行以下更改并查看。
发送请求时请将'Content-Type'
header属性设置为'application/json'
并增强您的以下处理程序方法所消耗的内容。
@PostMapping(path="/NewStudent", consumes="application/json")
public void registerNewStudent(@RequestBody StudentClass studentClass){
studentService.addNewStudent(studentClass);
}
尝试调试您的应用程序。您的休息电话应该到达您上面的处理程序方法。
我是 SpringBoot 的新手,我正在使用带有 JDBC 的 SpringBoot 来制作 API。 INSERT 无法正常工作,我已将 ID 设置为唯一并自动增加它。在我插入 ID 之前,它导致没有 problems.I 正在使用 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();
}
}
StudentDao
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 。尝试进行以下更改并查看。
发送请求时请将'Content-Type'
header属性设置为'application/json'
并增强您的以下处理程序方法所消耗的内容。
@PostMapping(path="/NewStudent", consumes="application/json")
public void registerNewStudent(@RequestBody StudentClass studentClass){
studentService.addNewStudent(studentClass);
}
尝试调试您的应用程序。您的休息电话应该到达您上面的处理程序方法。