Heim  >  Artikel  >  Java  >  Wie schränke ich Abfrageergebnisse mit Anmerkungen in Spring Data JPA ein?

Wie schränke ich Abfrageergebnisse mit Anmerkungen in Spring Data JPA ein?

DDD
DDDOriginal
2024-11-04 03:08:30892Durchsuche

How to Limit Query Results with Annotations in Spring Data JPA?

setMaxResults Annotation for Spring-Data-JPA

Spring-Data-JPA, eine leistungsstarke JPA-Repository-Abstraktionsbibliothek, vereinfacht den Datenzugriff in Spring -basierte Java-Anwendungen. Das Festlegen der maximalen Anzahl von Ergebnissen, die von einer Abfrage mithilfe von Anmerkungen zurückgegeben werden, war jedoch eine Herausforderung.

Spring Data JPA 1.7.0 (Evans Release Train) Solution

In Mit Spring Data JPA 1.7.0 und höher hat sich die Situation verbessert. Sie können jetzt die Schlüsselwörter „Top“ und „First“ verwenden, um die Abfrageergebnisse einzuschränken. Zum Beispiel:

findTop10ByLastnameOrderByFirstnameAsc(String lastname);

Spring Data begrenzt die Anzahl der zurückgegebenen Ergebnisse automatisch auf die angegebene Anzahl (standardmäßig 1, wenn weggelassen). Die Reihenfolge der Ergebnisse wird entscheidend, entweder durch eine OrderBy-Klausel oder einen Sort-Parameter in der Methode.

Vor Spring Data JPA 1.7.0

Vor dieser Verbesserung Das Abrufen von Datenausschnitten erforderte die Verwendung von Paginierung. Spring Data verwendet eine Pageable-Schnittstelle für Paginierungsanforderungen und eine Seitenabstraktion für die Ergebnisverarbeitung.

Implementieren Sie die Repository-Schnittstelle wie folgt:

public interface UserRepository extends Repository<User, Long> {

  List<User> findByUsername(String username, Pageable pageable);
}

Verwenden Sie die Schnittstelle, um die Ergebnisse zu erhalten:

Pageable topTen = new PageRequest(0, 10);
List<User> result = repository.findByUsername("Matthews", topTen);

Wenn Kontextinformationen erforderlich sind, verwenden Sie „Page“ als Rückgabetyp:

public interface UserRepository extends Repository<User, Long> {

  Page<User> findByUsername(String username, Pageable pageable);
}

Der Clientcode kann diese Informationen nutzen:

Pageable topTen = new PageRequest(0, 10);
Page<User> result = repository.findByUsername("Matthews", topTen);
Assert.assertThat(result.isFirstPage(), is(true));

Verwenden von „Page“ als Rückgabetyp Der Typ löst die Ausführung einer Zählprojektionsabfrage aus, um die Gesamtzahl der Elemente zu ermitteln. Um stabile Ergebnisse zu gewährleisten, fügen Sie außerdem immer Sortierinformationen in die PageRequest ein.

Das obige ist der detaillierte Inhalt vonWie schränke ich Abfrageergebnisse mit Anmerkungen in Spring Data JPA ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn