SpringBoot连接搜索参数浏览器URL

时间:2018-02-09 08:55:09

标签: spring-boot spring-data spring-data-rest

我开始使用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;

}

希望你能帮我把正确的方法告诉我应该做什么或做错什么。如果可能的话,一些代码也将受到高度赞赏。

祝你好运

1 个答案:

答案 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)
...