Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在springboot API中自定义来自@query的响应_Java_Mysql_Json_Api_Spring Boot - Fatal编程技术网

Java 如何在springboot API中自定义来自@query的响应

Java 如何在springboot API中自定义来自@query的响应,java,mysql,json,api,spring-boot,Java,Mysql,Json,Api,Spring Boot,我在SpringBoot中的API@query-response有问题 首先,我将向您展示我的代码: @RestController @RequestMapping("/api/osoba") public class APIController { @Autowired private KsiazkaRepo ksiazkaRepo; @JsonView(OnlyName.class) @RequestMapping(method = RequestMethod.POST, value =

我在SpringBoot中的API@query-response有问题

首先,我将向您展示我的代码:

@RestController
@RequestMapping("/api/osoba")
public class APIController {

@Autowired
private KsiazkaRepo ksiazkaRepo;

@JsonView(OnlyName.class)
@RequestMapping(method = RequestMethod.POST, value = "/getAll")
public Ksiazka find(@RequestParam("id") int id){
    String autor = ksiazkaRepo.findInfoById(id);
    Ksiazka ksiazka = new Ksiazka();
    ksiazka.setAutor(autor);
    return ksiazka;
}


我的接口OnlyName是空的。 当我这样使用它时,就像它是对的,我可以得到简单的响应

比如:

我知道@query的响应是字符串形式的,这就是为什么我只得到一个结果,但我应该如何更改以获得所有字符串或类似的结果?也许是字符串[]

我还可以创建两个不同的自定义询问@query并从中获取

1. imie,
2. nazwisko, 
但事实并非如此

非常感谢你的帮助, 再见

更新


按照此处的步骤进行操作

在这里,我试图告诉你如何简单地做到这一点

  • 更改查询,它应该返回列表
  • @Query(value=“从IEci8d0gZc.ksiazka中选择ksiazka.tytul、ksiazka.autor,其中ksiazka.id\u ksiazka=:id”,nativeQuery=true)
    列出findInfoById(@Param(“id”)int-id);//在这里,您可以将结果作为列表返回
    
  • 将“public Ksiazka find”中的返回类型更改为列表
  • @RestController
    @请求映射(“/api/osoba”)
    公共类APIController{
    @自动连线
    私人KsiazkaRepo KsiazkaRepo;
    @JsonView(OnlyName.class)
    @RequestMapping(method=RequestMethod.POST,value=“/getAll”)
    公共列表查找(@RequestParam(“id”)int-id){
    }
    
  • 在体内尝试做得到结果作为列表
  • @RestController
    @请求映射(“/api/osoba”)
    公共类APIController{
    @自动连线
    私人KsiazkaRepo KsiazkaRepo;
    @JsonView(OnlyName.class)
    @RequestMapping(method=RequestMethod.POST,value=“/getAll”)
    公共列表查找(@RequestParam(“id”)int-id){
    List autor=ksiazkaRepo.findInfoById(id);//将结果作为列表获取
    List ksiazkaList=new ArrayList();//从Ksiazka创建列表
    对于(字符串autors:autor){//返回的结果,可以循环
    Ksiazka Ksiazka=new Ksiazka();//为Ksiazka创建对象
    ksiazka.setAutor(autors);
    添加(ksiazka);//将创建的对象添加到列表中
    }
    return ksiazkaList;//返回您的列表
    }
    
    谢谢你的帮助,Dulaj。我在你的代码中还有一些错误。首先,编译器不知道“args”是什么意思。它应该是查询结果中的字符串列表?我不能放“ksiazka.setAutor(autor);”因为Autor在我的课堂上是一个字符串而不是列表。我可以使用String.valueOf,但它仍然不起作用,你运行了吗,现在还可以这样。结果:“tytul”:null,“Autor”:“Mistrz czystego kodu.Kodeks postępowania Professionanych programistów,Robert C.Martin”现在您可以看到,代码正在运行,它将返回列表,现在只需检查您的DB,因为当您传递ID时,它不应该与一行相关,它应该与注释相关,然后它将返回allCheck first post。我从DB添加了屏幕,它看起来是什么样子
    @Entity
    @Validated
    public class Ksiazka {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int idKsiazka;
    private int idKategoria;
    private String isbn;
    @JsonView(OnlyName.class)
    private String tytul;
    @JsonView(OnlyName.class)
    private String autor;
    private int stron;
    private String wydawnictwo;
    private int rokWydania;
    private String opis;
    
    
    public Ksiazka(){ }
    
    public Ksiazka(int idKsiazka, int idKategoria, String isbn, String tytul, String autor, int stron, String wydawnictwo, int rokWydania, String opis) {
        this.idKsiazka = idKsiazka;
        this.idKategoria = idKategoria;
        this.isbn = isbn;
        this.tytul = tytul;
        this.autor = autor;
        this.stron = stron;
        this.wydawnictwo = wydawnictwo;
        this.rokWydania = rokWydania;
        this.opis = opis;
    }
    
    public int getIdKsiazka() {
        return idKsiazka;
    }
    
    public void setIdKsiazka(int idKsiazka) {
        this.idKsiazka = idKsiazka;
    }
    
    public int getIdKategoria() {
        return idKategoria;
    }
    
    public void setIdKategoria(int idKategoria) {
        this.idKategoria = idKategoria;
    }
    
    public String getIsbn() {
        return isbn;
    }
    
    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }
    
    public String getTytul() {
        return tytul;
    }
    
    public void setTytul(String tytul) {
        this.tytul = tytul;
    }
    
    public String getAutor() {
        return autor;
    }
    
    public void setAutor(String autor) {
        this.autor = autor;
    }
    
    public int getStron() {
        return stron;
    }
    
    public void setStron(int stron) {
        this.stron = stron;
    }
    
    public String getWydawnictwo() {
        return wydawnictwo;
    }
    
    public void setWydawnictwo(String wydawnictwo) {
        this.wydawnictwo = wydawnictwo;
    }
    
    public int getRokWydania() {
        return rokWydania;
    }
    
    public void setRokWydania(int rokWydania) {
        this.rokWydania = rokWydania;
    }
    
    public String getOpis() {
        return opis;
    }
    
    public void setOpis(String opis) {
        this.opis = opis;
    }
    
    {
        "tytul": null,
        "autor": "Mistrz czystego kodu. Kodeks postępowania profesjonalnych programistów,Robert C. Martin"
    }
    
    1. imie,
    2. nazwisko, 
    
        @Query(value = "SELECT ksiazka.tytul, ksiazka.autor FROM IEci8d0gZc.ksiazka WHERE ksiazka.id_ksiazka = :id", nativeQuery = true)
        List<String> findInfoById(@Param("id") int id); // here you can return result as list
    
    
    @RestController
    @RequestMapping("/api/osoba")
    public class APIController {
    
    @Autowired
    private KsiazkaRepo ksiazkaRepo;
    
    @JsonView(OnlyName.class)
    @RequestMapping(method = RequestMethod.POST, value = "/getAll")
        public List<Ksiazka> find(@RequestParam("id") int id){
    }
    
    @RestController
    @RequestMapping("/api/osoba")
    public class APIController {
    
    @Autowired
    private KsiazkaRepo ksiazkaRepo;
    
    @JsonView(OnlyName.class)
    @RequestMapping(method = RequestMethod.POST, value = "/getAll")
        public List<Ksiazka> find(@RequestParam("id") int id){
         List<String> autor = ksiazkaRepo.findInfoById(id); // get result as as  list
         List<Ksiazka> ksiazkaList = new ArrayList<>(); // create list from Ksiazka 
         for (String autors : autor) { // returned result you can loop 
        Ksiazka ksiazka = new Ksiazka(); // create Object to Ksiazka
    
        ksiazka.setAutor(autors);
        ksiazkaList.add(ksiazka); //add created object to List
            }
           return ksiazkaList; // return your list
    
           }