Spring 启动处理获取请求中的多个参数

Spring Boot handling multiple parameters in a get request

我刚开始使用 Spring 引导框架。 我想创建一个@GetMapping,其中基于用户在参数 Property1 Name(String) 或 Protery2 Designation(String) 或 Property3 Salary(Integer) 中输入的内容,该方法应该能够根据一个或多个获取员工列表特性。 我可以创建单独的方法,但我不想这样做。 我想做这样的事情:

@GetMapping("/employee")
public List<Employee> getEmployee(Params parameters)
{
    // Filter the list based on parameters provided and return the list
}

另外,我不明白如何处理参数 例如,如果它是一个整数,则只有一列,但如果用户输入字符串,则有两列。 如果用户没有指定参数名称我必须处理。

您可以使用 @RequestParam 注释定义三个参数并检查哪个是非空的:

@GetMapping("/employee")
public List<Employee> getEmployee(@RequestParam(defaultValue = "empty") String name, @RequestParam(defaultValue = "empty") String designation, ....
{
    // check which one is not empty and perform logic
    if (!name.equals("empty")) {
      // do something 
  }
}

关于用户选择哪个参数:您可以做一个下拉菜单或简单的单选选项,用户自己选择搜索条件(并且每个条件都由请求参数映射)。例如:

您可以使用@RequestParam Map<String, String> params将所有参数绑定到一个变量

例如

@RequestMapping(value="/params", method = RequestMethod.GET)
public ResponseEntity getParams(@RequestParam Map<String, String> params ) {

   System.out.println(params.keySet());
   System.out.println(params.values());

   return new ResponseEntity<String>("ok", HttpStatus.OK);
}