jpa에서 기본제공하는 crud를 사용하는 방법
extends 시에 적용한 class를 인식해서 동작함
findByFirstNameLikeAndLastNameOrEmailLike 등 과 같이 연속해서 사용가능
(알아서 sql 을 생성해줌)
@Query 를 통해 필요한 sql을 작성 가능...
@Repository
public interface PersonRepository extends CrudRepository<Person, Long> {
List<Person> findByLastNameLike(String lastName);
}
public interface PersonRepository extends CrudRepository<Person, Long> {
List<Person> findByLastNameLike(String lastName);
}
위와 같이 하면
@Query("from Person p where s.lastName = '%포함문자%'" 와 같은 효과가 있음
실제 사용시
List<Person> personList = personRepository.findByLastNameLike("%e%");
e를 포함한 리스트를 출력해 줌
다른 예
personRepository.findByEmailLike("%gmail.com")
==> 하면 gmail.com으로 끝나는 email 리스트를 갖는 객체
변수를 포함하는 쿼리문 사용(?를 사용하고 뒤에 숫자를 넣음)
@Query("from Person p where p.firstName = ?1 OR p.firstName= ?2")
List<Person> findByLastNameOrFirstName(String ln, String fn);
List<Person> findByLastNameOrFirstName(String ln, String fn);
List<Person> personList1 = personRepository.findByLastNameOrFirstName("a", "d");
one to many 일 경우 기본적으로 fetch가 lazy로 연결되 테이블에 대해 변경할려면 애러가 남
해당 클래스를 @transactional로 변경 하던지 fetch를 eager로 변경해야함
'Spring > spring_유용한것' 카테고리의 다른 글
| java logger, sleep (0) | 2023.06.08 |
|---|---|
| jpa one to many 관련 (0) | 2023.06.07 |
| data base-mysql (0) | 2023.06.06 |
| html input type (0) | 2023.06.05 |
| jsp, thymeleaf 동시에 사용하기... (0) | 2023.06.05 |