@GetMapping(params=
вообще выглядит каким-то костылем, если честно. @GetMapping(value = "path")
public ResponseEntity<String> pathRoot(@RequestParam Map<String, String> allParams) {
if(allParams.isEmpty()) {
return new ResponseEntity<>("pathRoot", HttpStatus.OK);
}
if(__all_params_allowed__) {
return new ResponseEntity<>("withParam", HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@GetMapping(value = "path", params = "withParam")
public ResponseEntity<String> withParam(@RequestParam(value = "withParam") Integer withParam) {
return new ResponseEntity<>("withParam = " + withParam, HttpStatus.OK);
}
@GetMapping(value = "path", params = "!withParam")
public ResponseEntity<String> notWithParam(@RequestParam Map<String, String> allParams) {
if (allParams.isEmpty()) {
return new ResponseEntity<>("pathRoot", HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@GetMapping(params = {!ParameterName.SORT_BY})
// gift-certificates?sort_ABRAKADABRA_by=name
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public List<GiftCertificate> response404() {return null;}
@GetMapping(params = {ParameterName.SORT_BY})
// gift-certificates?sort_by=name
public List<GiftCertificate> findAll(@RequestParam(value = ParameterName.SORT_BY) Set<ColumnName> columnNames) {...}
@GetMapping
// gift-certificates
public List<GiftCertificate> findAll() {...}
@GetMapping
// gift-certificates?sort_ABRAKADABRA_by=name
public List<GiftCertificate> findAll(@RequestParam Map<String,String> allParams) {...}
и, главное - да, непонятно, при чем здесь ускорение в сотые доли секунды, если основная нагрузка все равно при передаче этой кучи дерьма в браузер и отрисовка
не думаю, что исходя из этого не нужно оптимизировать БД
или подзапросы
в любом случае, всегда лучше сначала написать чистый sql, который делает то, что нужно, а уже потом воплощать его в терминах фрейворка