Filtrowanie danych

0

Cześć,

Mam projekt w SpringBoot w którym potrzebuje w zasadzie dla większości kontrolerów stworzyć możliwość filtrowania danych. To znaczy endpoint zwraca 100 wyników i ma kolumny:
id
firstname
lastname
city
i chce na froncie móc się ograniczyć do rekordów, których firstname like 'Maury%', albo w innym wypadku do danych których city like '%ozn%'.
Jak do tego najlepiej podejść? Myślałem o QueryDSL, ale jakoś nie mam przekonania że to dobra droga...
Uprzedzając sugestie, aby zrobić to na froncie: nie można. Taka decyzja projektowa.

0

Pytanie nie ma związku ze Spring Bootem: https://www.w3schools.com/sql/sql_like.asp
W przypadku zaawansowanego filtrowania, np. fulltext search i dużego ruchu polecam Elastic Searcha.

0
amdziak napisał(a):

Cześć,

Mam projekt w SpringBoot w którym potrzebuje w zasadzie dla większości kontrolerów stworzyć możliwość filtrowania danych. To znaczy endpoint zwraca 100 wyników i ma kolumny:
id
firstname
lastname
city
i chce na froncie móc się ograniczyć do rekordów, których firstname like 'Maury%', albo w innym wypadku do danych których city like '%ozn%'.
Jak do tego najlepiej podejść? Myślałem o QueryDSL, ale jakoś nie mam przekonania że to dobra droga...
Uprzedzając sugestie, aby zrobić to na froncie: nie można. Taka decyzja projektowa.

Łączysz i mylisz różne rzeczy.
Sposób zaprojektowania kontrolerów nie ma NIC do warstwy bazodanowej, to jest oddzielny wybór techniczny. Na pewno najgorsze by było w różnych częściach używać innej warstwy bazodanowej.
Nie masz jakiegoś seniora w tym projekcie? Jak są zrealizowane pozostałe repozytoria? A może w JPA?

Nazwa biblioteki pada czasem, w sensie pozytywnym. Inne mniej czy bardziej podobne to JDBI, JOOQ, MyBatis. Akurat nie unosiłbym się na słówku "Query", to po prostu nazwa projektu.

1
amdziak napisał(a):

Uprzedzając sugestie, aby zrobić to na froncie: nie można. Taka decyzja projektowa.

To jest bardzo dobra decyzja projektowa, filtrowanie na froncie to proszenie się o ubicie aplikacji

chce na froncie móc się ograniczyć do rekordów, których firstname like 'Maury%', albo w innym wypadku do danych których city like '%ozn%'.

Skoro znasz like to w czym masz problem z napisaniem SQLa?
Ale uprzedzam SQL przy takich zapytaniach też w końcu zabije aplikację. Można użyć np PosgreSQL Full Text Search. Dla Oracla też są odpowiednie rozwiązania. Można łatwo zrobić i się nie narobić. Nawet Hibernate to wspiera.
Oczywiście najwydajniejszym rozwiązaniem jest użycie ElasticSearch lub Solr

1 użytkowników online, w tym zalogowanych: 0, gości: 1