0
0
SpringbootHow-ToBeginner · 4 min read

How to Implement Sorting in Spring Boot: Simple Guide

In Spring Boot, implement sorting by using the Sort class from Spring Data JPA and passing it to repository methods like findAll(Sort sort). You can specify sorting fields and directions (ascending or descending) easily to control the order of returned data.
📐

Syntax

The Sort class lets you define sorting rules by specifying the property names and direction (ascending or descending). You pass a Sort object to repository methods like findAll(Sort sort) to get sorted results.

Key parts:

  • Sort.by(Direction, String... properties): Creates a sort order by direction and properties.
  • Direction.ASC or Direction.DESC: Defines ascending or descending order.
  • repository.findAll(Sort sort): Fetches all records sorted as specified.
java
Sort sort = Sort.by(Sort.Direction.ASC, "name");
List<Entity> sortedList = repository.findAll(sort);
💻

Example

This example shows a Spring Boot repository fetching all users sorted by their lastName in descending order.

java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.List;

@SpringBootApplication
public class SortingExampleApplication implements CommandLineRunner {

    @Autowired
    private UserRepository userRepository;

    public static void main(String[] args) {
        SpringApplication.run(SortingExampleApplication.class, args);
    }

    @Override
    public void run(String... args) {
        // Add sample users
        userRepository.save(new User(1L, "Alice", "Smith"));
        userRepository.save(new User(2L, "Bob", "Johnson"));
        userRepository.save(new User(3L, "Carol", "Williams"));

        // Sort users by lastName descending
        Sort sort = Sort.by(Sort.Direction.DESC, "lastName");
        List<User> users = userRepository.findAll(sort);

        users.forEach(user -> System.out.println(user.getFirstName() + " " + user.getLastName()));
    }
}

@Entity
class User {
    @Id
    private Long id;
    private String firstName;
    private String lastName;

    public User() {}

    public User(Long id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public Long getId() { return id; }
    public String getFirstName() { return firstName; }
    public String getLastName() { return lastName; }
}

@Repository
interface UserRepository extends JpaRepository<User, Long> {}
Output
Carol Williams Bob Johnson Alice Smith
⚠️

Common Pitfalls

Common mistakes when implementing sorting in Spring Boot include:

  • Using property names that do not match entity fields, causing runtime errors.
  • Forgetting to import Sort from org.springframework.data.domain.
  • Passing null or an empty Sort object, which may return unsorted data unexpectedly.
  • Not handling case sensitivity in property names, which must exactly match entity field names.

Always verify property names and directions carefully.

java
/* Wrong: property name typo */
Sort sortWrong = Sort.by(Sort.Direction.ASC, "last_name"); // 'last_name' does not match 'lastName'

/* Right: correct property name */
Sort sortRight = Sort.by(Sort.Direction.ASC, "lastName");
📊

Quick Reference

Summary tips for sorting in Spring Boot:

  • Use Sort.by(Direction, "property") to create sorting rules.
  • Pass the Sort object to repository methods like findAll(Sort).
  • Direction can be ASC or DESC.
  • Property names must exactly match entity field names.
  • Combine multiple properties by passing more names to Sort.by.

Key Takeaways

Use Spring Data JPA's Sort class to define sorting by entity fields and direction.
Pass the Sort object to repository methods like findAll to get sorted results.
Ensure property names in Sort match entity field names exactly to avoid errors.
You can sort by multiple fields by listing them in Sort.by method.
Always specify direction explicitly as ASC or DESC for clarity.