본문 바로가기
TIL(Today I Learned)

TLI 56일 (23. 7. 31. 월) QueryDSL 기본, 중급 문법

by seed0335 2023. 7. 31.

1. 오늘 배운 내용

QueryDSL 기초적인 문법과 중급 문법을 배웟습니다. 

기본적인 활용법은 sql과 비슷합니다. 

장점은 자바 코드라서, 오류가 나면, 컴파일 과정에서 확인이 가능하다. 

 

중급 문법 중에서 가장 의미 있는 것은 동적 쿼리 booleanBuilder 사용법입니다. 

/**
     * 4.5 동적 쿼리 - Where 다중 파라미터 사용
     */
    @Test
    public void dynamicQuery_WhereParam() {
        String usernameParam = "member1";
        Integer ageParam = null;

        List<Member> result = searchMember2(usernameParam, ageParam);
        assertThat(result.size()).isEqualTo(1);
        System.out.println("result = " + result);
    }

    private List<Member> searchMember2(String usernameCond, Integer ageCond) {
        return queryFactory
                .selectFrom(member)
                .where(usernameEq(usernameCond), ageEq(ageCond))
                .fetch();
    }

    private Predicate usernameEq(String usernameCond) {
        return usernameCond != null ? member.username.eq(usernameCond) : null;

    }

    private Predicate ageEq(Integer ageCond) {
        return ageCond != null ? member.age.eq(ageCond) : null;
    }

댓글