как передать более одной строки как один объект - PullRequest
0 голосов
/ 09 апреля 2019

изображение почтальона

Это метод Controller:

@RequestMapping(value = "/add567", method = RequestMethod.POST, consumes = "application/json")
public Response addObj(@RequestBody List121 classA){

    return  service1.addObj(classA);
}

Это класс сущностей:

 package com.excel.entity;

import java.util.ArrayList;
import java.util.LinkedHashMap;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;

@Entity
@Table(name="ClassA")
public class ClassA  extends ArrayList<Object> {
     @Id
    @Column(name="rollNo")
    private int rollNo;

    @Column(name="name")
    private String name;

    @Column(name="english")
    private double english;

    @Column(name="maths")
    private double maths;

    @Column(name="science")
    private double science;

    @Column(name="totalMarks")
    private double totalMarks;

    @Column(name="percentage")
    private double percentage;

    @Column(name="status")
    private boolean status;

    @Lob
    @Column(name="file", columnDefinition="BLOB")
    private byte[] file;



    public ClassA() {
        // TODO Auto-generated constructor stub
    }



    public ClassA(int rollNo, String name, double english, double maths, double science, double totalMarks,
            double percentage, boolean status, byte[] file) {
        super();
        this.rollNo = rollNo;
        this.name = name;
        this.english = english;
        this.maths = maths;
        this.science = science;
        this.totalMarks = totalMarks;
        this.percentage = percentage;
        this.status = status;
        this.file = file;
    }



    public int getRollNo() {
        return rollNo;
    }



    public void setRollNo(int rollNo) {
        this.rollNo = rollNo;
    }



    public String getName() {
        return name;
    }



    public void setName(String name) {
        this.name = name;
    }



    public double getEnglish() {
        return english;
    }



    public void setEnglish(double english) {
        this.english = english;
    }



    public double getMaths() {
        return maths;
    }



    public void setMaths(double maths) {
        this.maths = maths;
    }



    public double getScience() {
        return science;
    }



    public void setScience(double science) {
        this.science = science;
    }



    public double getTotalMarks() {
        return totalMarks;
    }



    public void setTotalMarks(double totalMarks) {
        this.totalMarks = totalMarks;
    }



    public double getPercentage() {
        return percentage;
    }



    public void setPercentage(double percentage) {
        this.percentage = percentage;
    }



    public boolean isStatus() {
        return status;
    }



    public void setStatus(boolean status) {
        this.status = status;
    }



    public byte[] getFile() {
        return file;
    }



    public void setFile(byte[] file) {
        this.file = file;
    }


}

Этокласс, из которого я получаю список:

import com.fasterxml.jackson.annotation.JsonInclude;


@JsonInclude(JsonInclude.Include.NON_EMPTY) 
public class List121  {

    List<ClassA> classA;
    List<ClassB> classB;
    List<ClassC> classC;


    public List<ClassA> getClassA() {
        return classA;
    }
    public void setClassA(List<ClassA> classA) {
        this.classA = classA;
    }
    public List<ClassB> getClassB() {
        return classB;
    }
    public void setClassB(List<ClassB> classB) {
        this.classB = classB;
    }
    public List<ClassC> getClassC() {
        return classC;
    }
    public void setClassC(List<ClassC> classC) {
        this.classC = classC;
    }



}

Это класс использования DAO для хранения в базе данных:

public Response addObj(List121 classA){
    System.out.println("entering");
    ExcelAdd writer=new ExcelAdd();
   List121 e1=new List121();
   ClassA a1=new ClassA();
    try{
        s=sf.openSession();
        tx=s.beginTransaction();
        for(ClassA classa :classA.getClassA() ) {
            a1.setRollNo(classa.getRollNo());
            a1.setName(classa.getName());
            a1.setEnglish(classa.getEnglish());
            a1.setMaths(classa.getMaths());
            a1.setScience(classa.getScience());
            a1.setTotalMarks(classa.getTotalMarks());
            a1.setPercentage(classa.getPercentage());
            a1.setStatus(classa.isStatus());
            a1.setFile(classa.getFile());
            s.save(a1);
        }


        response.setStatus(200);
        response.setMessage("succesfull");
        tx.commit();
        return response;
    }
    catch (Exception e) {
        System.err.println("Exception : " + e.getMessage());
        response.setStatus(500);
        response.setMessage("unsuccesfull");
        tx.rollback();
return response;
    } finally {
        s.close();
    }

}

Я отправляю данные в почтальоне, но это плохозапрос:

Я не могу определить, какую ошибку он выдает.Получение плохого запроса в Почтальоне.

1 Ответ

0 голосов
/ 10 апреля 2019

Я предполагаю, что вы ищете что-то вроде этого

{
    "classList": [
        {
            "rollNumber": "1",
            "name": "Sham1"
        },
        {
            "rollNumber": "2",
            "name": "Sham2"
        }
    ]
}

Следующий код может быть использован для достижения того же.

package com.example.demo.controller;

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.demo.domain.Clazz;
import com.example.demo.domain.School;

@RestController
@RequestMapping(path = "/v1")
public class TestController {

    @PostMapping("/school")
    public void school(@RequestBody School school) {
        for(Clazz clazz : school.getClassList()) {
            System.out.println(clazz.getName());
        }
    }
}

Доменные объекты - School

package com.example.demo.domain;

import java.util.List;

public class School {

    private List<Clazz> classList;

    public List<Clazz> getClassList() {
        return classList;
    }

    public void setClassList(List<Clazz> classList) {
        this.classList = classList;
    }

}

Clazz

package com.example.demo.domain;

public class Clazz {
    String rollNumber;
    String name;

    public String getRollNumber() {
        return rollNumber;
    }

    public void setRollNumber(String rollNumber) {
        this.rollNumber = rollNumber;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Почтальон

enter image description here

Обновление: Следующее работает для меня с тем же входом, разделяемым ОП,,Я не уверен, какой тип возврата Ответа используется здесь.

@RequestMapping(value = "/add567", method = RequestMethod.POST, consumes = "application/json")
    public  ResponseEntity<List121> addObj(@RequestBody List121 classA){
        System.out.println(classA.getClassA().get(0).getName());
        return ResponseEntity.ok().body(getList121());
    }

Пожалуйста, поделитесь подробностями о типе возврата для дальнейшей отладки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...