QueryDsl의 설정방법— 스프링 부트 2.7버전 이전 버전기준
·
JPA 게시판/JPA
implementation 'com.querydsl:querydsl-jpa:5.0.0' annotationProcessor( "javax.persistence:javax.persistence-api", "javax.annotation:javax.annotation-api", "com.querydsl:querydsl-apt:5.0.0:jpa") 위 코드를 build.gradle에 추가하고, 최상위 폴더 아래에 있는 build.generated.sources.annotationProcesser.java.main 폴더를 잘 확인해보면 엔티티를 기반으로 한 Q~~~~ 클래스들이 생성되어있을 것이다.하지만, 위치가 마음에 들지 않는 경우에는 지정할 수 있는 방법이 있다. plugins { id 'java' id ..
QueryDsl DTO로 조회하는방법
·
JPA 게시판/JPA
MemberDTOpackage study.querydsl.dto; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @Builder @NoArgsConstructor public class MemberDTO { private String username; private int age; public MemberDTO(String username, int age) { this.username = username; this.age = age; } } JPQL에서 DTO로 조회하는 방법은 다음과 같다. @Test public void findDtoByJPQL(){ //아래와 같이 생성자를 사용하는 것과 같은 문법으로..
DTO QueryProjection
·
JPA 게시판/JPA
DTO의 생성자에 붙이는 어노테이션@QueryProjection 을 사용하면, DTO의 QType을 만들 수 있고, 그걸 사용해서 쿼리문을 생성할 수 있다. UserDTO@Data @NoArgsConstructor @Builder public class UserDTO { private String name; private int age; @QueryProjection public UserDTO(String name, int age) { this.name = name; this.age = age; } }이후, complieQuerydsl을 하면, DTO의 Q타입이 생성된다.@Test public void findDtoByQueryProjection() throws Exception{ //given List..
QueryDsl에서 동적쿼리를 해결하는법
·
JPA 게시판/JPA
BooleanBuilder를 사용해서 해결하는법과 Where문에서 다중 파라미터를 사용하는 방법 두가지가 존재 BooleanBuilder@Test public void 동적쿼리_booleanBuilder() throws Exception{ //given String usernameParam = "member1"; Integer ageParam = 10; //when List members = searchMember1(usernameParam, ageParam); //then members.forEach(member1 -> System.out.println("member1 = " + member1)); assertThat(members.size()).isEqualTo(1); } //동적 검색 조건을 영어로..