Dies ist ein Memo von dem, worüber ich bei der Verwendung von Spring-Boot gestolpert und nachgeforscht habe.
Betrachten Sie mit der folgenden Entität
@Entity
public class Entity {
@Id
private int Id;
private String name;
private int position;
// Getter,Setter weggelassen
}
List<T> findAll(Sort sort)
List <T> findAll (Sort sort)
wird definiert, wenn die Schnittstelle erstellt wird, die JpaRepository erbt, und kann wie folgt sortiert werden.
@Service
public class EntityService {
@Autowired
EntityRepoistory entityRepository;
public List<Entity> xxxMethod() {
return entityRepoistory.findAll(new Sort(ASC, "position"));
}
}
Geben Sie an, indem Sie Sortieren kombinieren
//Sortieren Sie nach absteigender Position und aufsteigender ID
Sort sort = new Sort(Direction.DESC, "position").and(new Sort(Direction.ASC, "id"));
Das Sortieren kann einfach durch Definieren einer Methode auf der Schnittstelle erreicht werden, die JpaRepository erbt.
@Repository
public interface EntityRepository implements JpaRepository<Entity, Integer> {
// select * from entity where name = 'xxx'Entspricht der Reihenfolge nach Position aufsteigend
List<Entity> findByNameOrderByPosition(String name);
// select *Entspricht der Reihenfolge der Entitäten nach Position
//findAllOrderByPosition ist nicht gut
List<Entity> findAllByOrderByPosition();
}
Wenn der Rückgabewert von findBy List ist, kann er auch mit dieser Benennung als mehrere Ergebnisse erhalten werden. Eine Falle, in der findAllOrderByPosition nicht funktioniert.
// select * from entity order by position desc,Entspricht id asc
List<Entity> findAllByOrderByPositionDescIdAsc();
Realisiert durch Schreiben im JPQL-Format in @ Query
@Repository
public interface EntityRepository implements JpaRepository<Entity, Integer> {
@Query(value = "select e from Entity e order by position desc, id asc")
List<Sample> queryAll();
//Oder
@Query(value = "select e from Entity")
List<Sample> queryAll(Sort sort);
}
Verwenden Sie "@ Orderby"
@Entity
public class Entity {
@OrderBy(value = "position desc, id asc")
@OneToMany()
@JoinColumn(name = "entity_id")
private List<EntityItem> entityItems;
}
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
Recommended Posts