Filtrowanie danych

Filtrowanie danych
AM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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.

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1909
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.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
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.

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.