Java 如何在springboot API中自定义来自@query的响应
我在SpringBoot中的API@query-response有问题 首先,我将向您展示我的代码: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 =
@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);//在这里,您可以将结果作为列表返回
@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
}