当前位置: 首页 > 知识库问答 >
问题:

我的RESTAPI将空数据提供给MySQL

梁宪
2023-03-14

我不熟悉RESTAPI和Spring Boot。我一直在尝试使用存储员工数据的STS和MySQL创建RESTAPI。

一切似乎都很好,但是当我在Postman中发布数据时,空的行存储在MySQL和body中。

//My employee class in the model 
package com.example.SpringBootApplicationProject.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.Data;

//We need to make this simple Employee class to JPA annotation
@Data
@Entity
@Table(name="employees")
public class Employee {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    
    @Column(name = "first_name")
    private String firstName;
    
    @Column(name = "last_name")
    private String lastName;
    
    @Column(name = "email")
    private String email;
    
    @Column(name = "salary")
    private long salary;

}

//员工控制器类

package com.example.SpringBootApplicationProject.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.SpringBootApplicationProject.model.Employee;
import com.example.SpringBootApplicationProject.service.EmployeeService;

@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
    
    private EmployeeService employeeService;

    public EmployeeController(EmployeeService employeeService) {
        super();
        this.employeeService = employeeService;
    }
    
    //Build employee REST API
    @PostMapping
    public ResponseEntity<Employee> saveEmployee(@RequestBody Employee employee){
        return new ResponseEntity<Employee>(employeeService.saveEmployee(employee), HttpStatus.CREATED);
    }
}

//员工存储库类


package com.example.SpringBootApplicationProject.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.example.SpringBootApplicationProject.model.Employee;

//This is an interface. 
//JPA repository automatically provides @Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long>{
//public interface EmployeeRepository extends JpaRepository<Employee, Long>{

    //Employee save(Employee employee);

}

//员工服务类

package com.example.SpringBootApplicationProject.service;

import com.example.SpringBootApplicationProject.model.Employee;

public interface EmployeeService 
{
    Employee saveEmployee(Employee employee);

}

//员工服务Impl

package com.example.SpringBootApplicationProject.service.impl;

import org.springframework.stereotype.Service;

import com.example.SpringBootApplicationProject.model.Employee;
import com.example.SpringBootApplicationProject.repository.EmployeeRepository;
import com.example.SpringBootApplicationProject.service.EmployeeService;

@Service
public class EmployeeServiceImpl implements EmployeeService{
    private EmployeeRepository  employeeRepository;
    
    public EmployeeServiceImpl(EmployeeRepository employeeRepository) {
        
        super();
        this.employeeRepository = employeeRepository;
    }


    @Override
    public Employee saveEmployee(Employee employee) {
        return employeeRepository.save(employee);
    }

}
Postman blank data[MySQL Empty DB][1]

共有1个答案

楚茂实
2023-03-14

你不能给任何url在Put映射和没有保存数据你直接把保存功能响应实体而返回数据。您必须先保存数据并返回该实体。下面是修改过的代码。

@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
    @Autowired
    private EmployeeService employeeService;
    
    @PostMapping("/employee")
    public ResponseEntity<Employee> saveEmployee(@RequestBody Employee employee){
        employeeService.saveEmployee(employee);
        return new ResponseEntity.ok(employee);
    }
}
 类似资料:
  • 我做了一个主菜单JFrame,它可以生成4个不同的新框架来表示每个菜单。主菜单框架工作正常。但是我发现它不能从新框架文本字段中获取文本。这是错误报告和源代码。请让我知道如何修复它。 java线程“AWT-EventQueue-0”中出现异常。电话簿上的lang.NullPointerException。在javax上执行的操作(PhoneBook.java:166)。摆动抽象按钮。fireActi

  • 我想使用RESTTemplate将POST请求发送到RestAPI。当我执行下面的代码时,它给出了null响应。但是,我得到了http状态代码200 OK。我已经适当地添加了响应模型,所以模型没有问题。甚至,当我将响应类型更改为String时,它也不给我响应。有什么建议吗?

  • 我试图找出是否有可能传递一个JSON对象RestAPI,或传递多个参数到该API?如何在Spring中读取这些参数?让我们假设url看起来像下面的例子: 例1<代码>http://localhost:8080/api/v1/mno/objectKey?id=1 传递下面url中的JSON对象是否有效? 例2<代码>http://localhost:8080/api/v1/mno/objectKey

  • 我正在尝试访问Datasource对象,但它总是给出null,我正在使用@Inject,请告诉我我做错了什么? 它总是给空AgroalDataSource广告对象,为什么它不工作,我做错了什么吗? 它给出了以下错误: 2021-02-23 18:23:08,029ERROR[systemLogger](Quarkus主线程)DataSource不能为空:java.lang.IllegalArgum

  • 在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge

  • 问题内容: 我正在使用针对英特尔数学内核库构建的NumPy。我使用virtualenv,通常使用pip来安装软件包。 但是,为了让NumPy找到MKL库,有必要在编译之前先在NumPy源目录中创建site.cfg文件,然后手动进行构建和安装。我可以编写整个过程的脚本,但是我希望有一个更简单的解决方案。 我有一个标准的site.cfg文件,可在版本控制下用于此目的。是否有任何pip命令行选项会告诉它