[JPA] QueryMethod의 정의 및 기본실습 2

jpa, spring

And #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByEmailAndName(String email, String name);
}
@Test
void select() {
    System.out.println("findByEmailAndName : " + userRepository.findByEmailAndName("ben@email.com","Ben"));
}

Or #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByEmailOrName(String email, String name);
}
@Test
void select() {
    System.out.println("findByEmailOrName : " + userRepository.findByEmailOrName("ben@email.com","Ben"));
}


After #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByCreatedAtAfter(LocalDateTime yesterday);
    List<User> findByIDAfter(Long id);
}
@Test
void select() {
    System.out.println("findByCreatedAtAfter : " + userRepository.findByCreatedAtAfter(LocalDateTime.now().minusDays(1L)));
    System.out.println("findByCreatedAtAfter : " + userRepository.findByIDAfter(4L));
}

GreaterThan (>) #

public interface UserRepository extends JpaRepository<User, Long> {    
    List<User> findByCreatedAtGraterThan(LocalDateTime yesterday);
}
@Test
void select() {
    log.info("findByCreatedAtGraterThan : {}", userRepository.findByCreatedAtGraterThan(LocalDateTime.now().minusDays(1L)));
}

GreaterThanEqual (>=) #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByCreatedAtGraterThanEqual(LocalDateTime yesterday);
}
@Test
void select() {
    log.info("findByCreatedAtGraterThanEqual : {}", userRepository.findByCreatedAtGraterThanEqual(LocalDateTime.now().minusDays(1L)));
}

Between #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByCreatedAtBetween(LocalDateTime yesterday, LocalDateTime tomorrow);
    List<User> findByIdBetween(Long id1, Long id2);
}
@Test
void select() {
    log.info("findByCreatedAtBetween : {}", 
        userRepository.findByCreatedAtBetween(LocalDateTime.now().minusDays(1L), LocalDateTime.now().plusDays(1L)));
    log.info("findByIdBetween : {}", 
        userRepository.findByIdBetween(1L, 3L));
}

IsNotNull / IsNotEmpty #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByIdIsNotNull();
    List<User> findByIdIsNotEmpty();
}
@Test
void select() {
    log.info("findByIdIsNotNull : {}", 
        userRepository.findByIdIsNotNull());
    log.info("findByIdIsNotEmpty : {}", 
        userRepository.findByIdIsNotEmpty()); // error
}

In / NotIn #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByNameIn(List<String> names);
}
@Test
void select() {
    log.info("findByNameIn : {}", 
        userRepository.findByNameIn(Lists.newArrayList("Ben", "Dennis")));
}

StartingWith / EndingWith / Containing #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByNameStartingWith(String name);
    List<User> findByNameEndingWith(String name);
    List<User> findByNameContains(String name);
}
@Test
void select() {
    log.info("findByStartingWith : {}", userRepository.findByNameStartingWith("Be"));
    log.info("findByEndingWith : {}", userRepository.findByNameEndingWith("en"));
    log.info("findByContains : {}", userRepository.findByNameContains("e"));
}

Like #

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByNameLike(String name);
}
@Test
void select() {
    log.info("findByNameLike : {}", userRepository.findByNameLike("%e%"));
    log.info("findByNameLike : {}", userRepository.findByNameLike("%en"));
    log.info("findByNameLike : {}", userRepository.findByNameLike("Be%"));
}

Is #