[사전 설정] -- 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 |