Как прочитать JSON данных из Интернета и вставить вставку в базу данных - PullRequest
0 голосов
/ 15 апреля 2020

При получении я получаю данные только для первой строки; это только один получаемый объект.

В этом случае empNo = 3 данные не извлекаются.

/ * Я использую функциональность JAX_rs и PostMan для проверки данных.

Ниже приведен код для вставки, который я использую * /

Пример данных почтальона

[ {
        "empNo": "2",
        "empName": "roy",
        "empRole": "Software"
    },
    {
        "empNo": "3",
        "empName": "sri",
        "empRole": "Software"
    }
]

// Класс модели

package com.employee.employeeModel;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessType;

@XmlRootElement(name = "employee")
@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {

    private String empNo;
    private String empName;
    private String empRole;

    /*
     * public Employee() // Default DeConstructor
     * {
     * 
     * }
     */

    /*
     * public Employee(String empNo, String empName, String empRole) // Parameterized Constructor
     * 
     * { 
     * this.empNo =  * empNo; this.empName = empName; this.empRole = empRole; }
     */

    public String getEmpNo() {
        return empNo;
    }

    public void setEmpNo(String empNo) {  //instance method
        this.empNo = empNo;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public String getEmpRole() {
        return empRole;
    }

    public void setEmpRole(String empRole) {
        this.empRole = empRole;
    }
}

// Метод для вставки -

public static  Employee addEmployee(Employee emp2) {

    int status=0;

    try {
        Connection connection = EmployeeConnection.getConnection();
        PreparedStatement ps=connection.prepareStatement( "INSERT INTO employee VALUES(?,?,?)");


        ps.setString(1, emp2.getEmpNo());
        ps.setString(2, emp2.getEmpName()); 
        ps.setString(3,emp2.getEmpRole());
         status =  ps.executeUpdate();
         System.out.println(status +"row inserterd sucessfully" );
    }
    catch (SQLException ex) { System.out.println(ex.getMessage()); 

    }

        return emp2;

}

// Класс обслуживания для метода POST

@POST
@Path("/Submit")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public Employee  addEmployee(Employee emp)
    {

            return EmployeeData.addEmployee(emp);   
    }

1 Ответ

0 голосов
/ 15 апреля 2020

В Postman вы отправляете несколько сотрудников (массив), но ваша конечная точка и метод DAO работают только с одним экземпляром Employee addEmployee(Employee emp).

Вам необходимо изменить конечную точку / DAO для обработки Employee[]/List<Employee>.

Обновление: добавлена ​​конечная точка для обработки нескольких сотрудников

@POST
@Path("/employees")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public List<Employee> addEmployees(List<Employee> employees) {
    List<Employee> result = new ArrayList<>();

    for (Employee employee : employees) {
        result.add(EmployeeData.addEmployee(employee));
    }

    return result;
}

Добавьте вышеупомянутый фрагмент кода с соответствующими операторами import и протестируйте только что добавленный API /employees конечная точка.

...