Я пытаюсь создать конечную точку 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