본문 바로가기

QueryDSL4

[querydsl] 동적 쿼리 만들기 mybatis는 특정한 xml에서 sql을 처리하고, 거기서 또 동적 쿼리를 처리한다. 이게 생각보다 나는 많이 불편했다. querydsl은 java 코드 내에서 동적 쿼리 처리가 가능하다. 이는 큰 이점이라고 생각한다. 오늘은 querydsl에서 동적쿼리를 처리하는 두가지 방법에 대해 작성해보려고한다. 1.BooleanBuilder 이 방법은 QueryDSL에서 공식적으로 문서로 남겨져 있는 방식인데 null인지 아닌지를 판별하여 builder를 조립해서 끼워 넣는 방식으로 작업을 한다. //BooleanBuilder builder = new BooleanBuilder(member.userName.eq(nameCond)); // 이런식으로 초기값 설정 가능 BooleanBuilder builder = .. 2021. 7. 8.
[querydsl] querydsl 에서 서브쿼리 사용하는 법 하이 .. 오늘은 querydsl에서 서브쿼리를 사용하는 방법을 정리해 두려고 한다. 1. where 절 서브 쿼리 1) 기본 사용 법 기본적인 사용 방법을 아래 예제로 만들었다. 여기서 주의해야할 점은 Q 도메인을 서브 쿼리에서 사용할 놈은 따로 만들어 줘야한다는 것이다. 그리고 서브쿼리는 JPAExpressions라는 것을 이용해서 구현할 수 있는데, Q 도메인을 Static 처리한 것 처럼 이것 역시 처리가 가능하다. QMember subMember = new QMember("subMember"); List result = queryFactory .selectFrom(member) .where(member.age.eq( //JPAExpressions. select(subMember.age.min().. 2021. 7. 5.
JPQL vs QueryDSL 간단 비교 하이..! 최근에 QueryDSL 이라는 걸 알게 되었고 ... 이렇게 시간이 날때마다 틈틈이 정리해 두려고 한다. 오늘은 정말 간단하게 특정 데이터를 select 해오는 간단한 테스트 코드로 비교를 해봤다. 기본적인 QueryDSL 과 JPA 설정은 아래 링크를 참조하면된다. https://devkingdom.tistory.com/241 [queryDsl] QueryDsl 프로젝트 환경 세팅하기 보통 처음으로 SpringBoot 프로젝트를 만들때는, https://start.spring.io/ 여기서 필요한 라이브러리도 넣고 해서 기본적인 건 세팅을 해준다. 그런데.. queryDsl 은 저기서는 안되어서 내부적으로 build.gradle devkingdom.tistory.com @Test public.. 2021. 6. 30.
[querydsl] queryDsl 기본 문법 정리 - fetch, sort, paging, aggregation 오늘은 querydsl 기본적인 문법을 정리해 보도록 하겠다. 1. fetch fetch를 이용해서 querydsl 의 결과를 반환할수 있는데 여기서 여러가지 방법이 있다. 1) fetch() 리스트로 결과를 반환하는 방법이다. 만약에 데이터가 없으면 빈 리스트를 반환해준다. List fetch = queryFactory .selectFrom(member) .fetch(); 2) fetchOne() 단건을 조회할 때 사용한다. 결과가 없을때는 null 을 반환하고 결과가 둘 이상일 경우에는 NonUniqueResultException을 던진다. Member fetchOne = queryFactory .selectFrom(member) .fetch(); 3) fetchFirst() 처음의 한건을 가져오고 .. 2021. 6. 30.