본문 바로가기
Spring

[2] Querydsl

by 민지기il 2025. 3. 4.

[사전 설정] -- build.gradle에 설정하기

ext {
	queryDslVersion = "5.0.0" // QueryDSL 버전 설정
}
// dependencies에 QueryDSL 설정
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"
implementation "com.querydsl:querydsl-core"
implementation "com.querydsl:querydsl-collections"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jakarta"
// == QueryDSL 추가 설정 == //
def generated = 'src/main/generated'
tasks.withType(JavaCompile) {
	options.getGeneratedSourceOutputDirectory().set(file(generated))
}
// java source set 에 QueryDSL Q class 위치 추가
sourceSets {
	main.java.srcDirs += [ generated ]
}
// gradle clean 시에 QClass 디렉토리 삭제
clean {
	delete file(generated)
}

이후에 compileJava파일 실행해서 QTodo 파일 생성

 

[search 패키지]

(TodoSearch라는 interface)

public interface TodoSearch {
    Page<Todo> search1();
}

(TodoSearchImpl)

@Log4j2
public class TodoSearchImpl extends QuerydslRepositorySupport implements TodoSearch{
    public TodoSearchImpl(){
        super(Todo.class);
    }
    @Override
    public Page<Todo> search1(){
        log.info("search1..............");
        QTodo todo = QTodo.todo; //자동으로 생성한 Q 클래스
        JPQLQuery<Todo> query = from(todo); //QueryDSL을 사용하여 JPQL 쿼리 생성
        query.where(todo.title.contains("1"));
        //Pageable 실행
        Pageable pageable = PageRequest.of(1,10, Sort.by("tno").descending());
        this.getQuerydsl().applyPagination(pageable, query);

        query.fetch(); //목록 데이터 가져옴
        query.fetchCount(); //Long type
        return null;
    }
}

super(Todo.class); → QuerydslRepositorySupport 클래스의 생성자를 호출

                                 → QuerydslRepositorySupport가 Todo 엔티티를 관리하도록 설정

QTodo: Todo 엔티티의 속성을 쉽게 쿼리하기 위해 자동으로 생성된 클래스

QTodo.todo를 사용하면 Todo 테이블의 컬럼을 코드에서 직접 접근

Pageable: 1페이지, 10개씩 tno 기준 내림차순 정렬

'Spring' 카테고리의 다른 글

[6] Todo get, register, modify, remove  (0) 2025.03.07
[5] 페이지 처리 controller 동작  (0) 2025.03.06
[4] 페이지 처리하는 DTO 설계  (0) 2025.03.05
[3] DTO 설정  (0) 2025.03.04
[1] Entity Test  (0) 2025.03.04