Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

기본 Q-Type 본문

인프런/[인프런] QueryDsl

기본 Q-Type

Seung__ 2021. 9. 1. 22:30

1. Q 클래스 인스턴스 생성 방법


  • 별칭 직접 지정
QMember qMember = new QMember("m"); //별칭 직접 지정
  • 기본 인스턴스 사용
QMember qMember = QMember.member; //기본 인스턴스 사용

  • 기본 인스턴스를 사용하면 QMember를 staic으로 등록해서 코드 줄일 수 도 있음
package study.querydsl;

import com.querydsl.jpa.impl.JPAQueryFactory;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;
import study.querydsl.entity.Member;
////////////////////////////////////
import study.querydsl.entity.QMember;
////////////////////////////////////
import study.querydsl.entity.Team;

import javax.persistence.EntityManager;

import static org.assertj.core.api.Assertions.*;
import static study.querydsl.entity.QMember.*;

@SpringBootTest
@Transactional
public class QuerydslBasicTest {

    @Autowired
    EntityManager em;

    JPAQueryFactory queryFactory;


    @BeforeEach
    public void before(){
        queryFactory = new JPAQueryFactory(em);

        Team teamA = new Team("teamA");
        Team teamB = new Team("teamB");
        em.persist(teamA);
        em.persist(teamB);
        Member member1 = new Member("member1", 10, teamA);
        Member member2 = new Member("member2", 20, teamA);
        Member member3 = new Member("member3", 30, teamB);
        Member member4 = new Member("member4", 40, teamB);
        em.persist(member1);
        em.persist(member2);
        em.persist(member3);
        em.persist(member4);
    }

    @Test
    public void startQuerydsl(){

        //변수명에 별칭 지정. 사실 크게 중요하지 않음 ㅋㅋ 안씀 ㅋㅋㅋ
        //QMember m = new QMember("m"); //어떤 QMember인지 구분

        //QMember m = QMember.member;

        Member findMember = queryFactory
                .select(member)
                .from(member)
                .where(member.username.eq("member1"))
                .fetchOne();

        assertThat(findMember.getUsername()).isEqualTo("member1");

    }
}
  • 오 가독성이 더 좋아짐 ㅋㅋㅋ 이렇게 쓰자.
  • 어 근데 문제가 있다. Querydsl이 만들어주는 JPQL을 볼 수가 없다ㅋㅋㅋ
    • 옵션을 추가해 주자. user_sql_comments: true
  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        # show_sql: true
        format_sql: true
        use_sql_comments: true

요렇게 확인이 가능하다.

 

 

 

2. GitHub : 210901 Q-Type


 

GitHub - bsh6463/Querydsl

Contribute to bsh6463/Querydsl development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] QueryDsl' 카테고리의 다른 글

결과 조회  (0) 2021.09.01
검색조건 쿼리  (0) 2021.09.01
Querydsl vs JPQL  (0) 2021.09.01
예제 도메인 모델  (0) 2021.09.01
Querydsl 설정 및 검증  (0) 2021.09.01
Comments