Wednesday, January 29, 2020

Methods in Spring Data JPA repositories : find, read, query, count and get examples

In this tutorial, we'll explore how Spring Data JPA leverages this idea in the form of a method naming convention.
 
Equality Condition Keywords

We can just append the property name without any keyword for an exact match condition:

List<User> findByName(String name);
List<User> findByNameIs(String name);
List<User> findByNameEquals(String name);

List<User> findByNameIsNot(String name);

List<User> findByNameIsNull();
List<User> findByNameIsNotNull();

List<User> findByActiveTrue();
List<User> findByActiveFalse();

Similarity Condition Keywords

List<User> findByNameStartingWith(String prefix);
List<User> findByNameEndingWith(String suffix);
List<User> findByNameContaining(String infix);

List<User> findByNameLike(String likePattern);

String likePattern = "a%b%c";
userRepository.findByNameLike(likePattern);

Comparison Condition Keywords

List<User> findByAgeLessThan(Integer age);
List<User> findByAgeLessThanEqual(Integer age);


List<User> findByAgeGreaterThan(Integer age);
List<User> findByAgeGreaterThanEqual(Integer age);


List<User> findByAgeBetween(Integer startAge, Integer endAge);

payments received by particular person Between two dates.
List<Payment> findAllByReceiveByAndDateTimeBetween(String receiveBy, String fromDate, String toDate);


List<User> findByAgeIn(Collection<Integer> ages);


List<User> findByBirthDateAfter(ZonedDateTime birthDate);
List<User> findByBirthDateBefore(ZonedDateTime birthDate);

Multiple Condition Expressions

List<User> findByNameOrBirthDate(String name, ZonedDateTime birthDate);
List<User> findByNameOrBirthDateAndActive(String name, ZonedDateTime birthDate, Boolean active);

Sorting the Results
List<User> findByNameOrderByName(String name);
List<User> findByNameOrderByNameAsc(String name);


List<User> findByNameOrderByNameDesc(String name);


findByInventoryIdIn(List<Long> inventoryIdList)

Spring data, find by property of a nested object:

public class Student {
    private String name;
    private List<Grade> grades;
}


public class Grade {
    private String className;
    private String grade;
}

public List<Student> findByGrades_ClassName(final String className);


Spring Data JPA - Limiting Query Results:

Employee findTopByOrderBySalaryDesc();

  Employee findTopByOrderBySalaryAsc();

  List<Employee> findTop3ByOrderBySalaryDesc();

  List<Employee> findTop3ByOrderBySalaryAsc();

  List<Employee> findFirst2BySalary(int salary);

  List<Employee> findFirst2ByDeptOrderBySalaryDesc(String deptName);
 


No comments:

Post a Comment