Spring boot Получить запрос с несколькими необязательными параметрами, используя QuerySL - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь создать конечную точку GET весной с несколькими дополнительными параметрами запроса для запроса данных из mon go (думать и запрашивать) и возвращать их.

То, что у меня есть, - MyController. java

@GetMapping
    public ResponseEntity<Iterable<Item>> searchItem(@RequestParam Map<String, Optional<String>> requestParams){
            List<Item> items = itemService.findItem(requestParams);
            return (new ResponseEntity<>(Item, HttpStatus.Ok));

    }

@GetMapping
    public ResponseEntity<Iterable<Item>> getAllItems(){
        Iterable<Item> items= itemService.listItems();
        return (new ResponseEntity<>(items, HttpStatus.OK));
    }

Вот мой уровень обслуживания -

@Override
    public List<Item> findItem(Map<String,Optional<String>> params) {
        QItem qItem = QItem.item;
        BooleanBuilder builder = new BooleanBuilder();
        params.forEach( (String key, Optional<String> value) -> {
            if(value.isPresent()) {
                builder.and(qUser.key.eq(value.get()));
            }
        });
        List<Item> items = itemRepository.findAll(builder);
        return resultItems;
    }

    @Override
    public Iterable<Item> listItems() {
        List<Item> items = userRepository.findAll();
        return items;
    }


Если это уже не очевидно, я пытаюсь построить предикат с использованием booleanBuilder и передать его слою репозитория. Ключ на карте будет содержать имя необходимого поля QItems.

Также, как мне разрешить 2 сопоставления GET для получения всех пользователей и получения по параметру? Я могу сделать запрос GET -> / item для получения всех элементов или я могу сделать запрос GET с параметрами для запроса по параметрам -> / item? Param1 = value1¶m2 = value2

...