我开始使用Spring Boot。我的目标是进行有限的搜索,从数据库中检索数据。我想在网址的查询中添加多个参数。
到目前为止,我可以使用seek:http://localhost:8080/wsr/search/来完整搜索数据库中的数据。但我想要的是在几个条件下划分搜索,在浏览器的URL中添加参数,例如:
我发现的问题是我无法找到使用多种条件的方法。我唯一能让它发挥作用的是:
我浏览网页但没有针对这个确切问题的结果,太多信息但无法找到这个。
我的代码是:
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "address")
private String address;
@Column(name = "country")
private String country;
public Value() {
}
public Value(int id, String name, String address, String country) {
this.id = id;
this.name = name;
this.address = address;
this.country = country;
}
//all getters and setters
}
public class Implementation {
@Autowired
private DataBase dataBase;
public List<Value> findById(@PathVariable final int id) {
return dataBase.findById(id);
}
public List<Value> findByName(@PathVariable final String name) {
return dataBase.findByName(name);
}
public List<Value> findByAddress(@PathVariable final String address) {
return dataBase.findByAddress(address);
}
public List<Value> findByCountry(@PathVariable final String country) {
return dataBase.findByCountry(country);
}
}
//@Component
@RepositoryRestResource(collectionResourceRel = "person", path = "data")
public interface DataBase extends JpaRepository<Value, Integer>{
public List<Value> findAll();
@RestResource(path = "ids", rel = "findById")
public List<Value> findById(@Param("id") int id) throws ServiceException;
@RestResource(path = "name", rel = "findByName")
public List<Value> findByName(@Param("name") String name) throws ServiceException;
@RestResource(path = "address", rel = "findByAddress")
public List<Value> findByAddress(@Param("address") String address) throws ServiceException;
@RestResource(path = "country", rel = "findByCountry")
public List<Value> findByCountry(@Param("country") String country) throws ServiceException;
}
希望你能帮我把正确的方法告诉我应该做什么或做错什么。如果可能的话,一些代码也将受到高度赞赏。
祝你好运
答案 0 :(得分:0)
您可以使用@RequestParam("nameParameter")
注释来映射所需的所有参数。假设你有网址:
http://localhost:8080/data/search/person?name=Will&country=UK
那么你可以拥有一个api:
...
@RequestMapping(value = "/person")
public String api(@RequestParam("name") String name, @RequestParam("country") String country)
...