获取一个变量的多个RequestParam

Get multiple RequestParam of one variable

我正在尝试使用 MongoTemplate、Query 和 Criteria 构建多功能搜索方法。

这是我用于变量搜索的 RequestMapping:

public Page<Users>getUsers(
            @RequestParam(value = "name", required = false) 

String name) {
    
    Query query = new Query();
    Criteria criteria = new Criteria();
    criteria = criteria.where("name").regex(".*" + name + ".*","i");
    query.addCriteria(criteria);

我希望能够使用多个请求参数搜索 lastName。例如,我想找到姓氏为“Smith”和“Johnson”的所有人。

像这样:

@RequestParam(value = "lastName", required = false) List<String> lastName) {

Query query = new Query();
Criteria criteria = new Criteria();
criteria = criteria.where("lastName").regex(do something different..);
query.addCriteria(criteria);

URL 将是:http://localhost:8080/get?lastName=Smith&lastName=Johnson

这是我找到映射多值参数 https://www.baeldung.com/spring-request-param 的地方,但不清楚它究竟是如何工作的。如果有人可以提供 link 和完整的示例(存储库、处理程序和其他东西),请提供。

我是这样做的:

if (CollectionUtils.isNotEmpty(lastName)) {
        Criteria lastNameCriteria = new Criteria();
        lastNameCriteria = lastNameCriteria.where("lastName").in(lastName.toArray());
        criterias.add(lastNameCriteria);
    }

你最后提到的那篇文章对你的问题有准确的回答:

A single @RequestParam can have multiple values:

@GetMapping("/api/foos") @ResponseBody public String
> getFoos(@RequestParam List<String> id) {
>     return "IDs are " + id; }

并且Spring MVC 将映射一个以逗号分隔的 id 参数:

http://localhost:8080/spring-mvc-basics/api/foos?id=1,2,3 ---- IDs are [1,2,3] or a list of separate id parameters:

http://localhost:8080/spring-mvc-basics/api/foos?id=1&id=2 ---- IDs are [1,2]