This example shows a Spring Data JPA repository with custom query methods named by convention. The service class calls these methods and prints results.
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByLastName(String lastName);
Optional<User> findByEmail(String email);
boolean existsByUsername(String username);
}
// Sample usage in a service class
package com.example.demo.service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public void demoQueries() {
List<User> smiths = userRepository.findByLastName("Smith");
System.out.println("Users with last name Smith: " + smiths.size());
Optional<User> userOpt = userRepository.findByEmail("alice@example.com");
System.out.println("User with email alice@example.com found: " + userOpt.isPresent());
boolean exists = userRepository.existsByUsername("alice123");
System.out.println("User with username alice123 exists: " + exists);
}
}