build.gradle에 다음의 코드를 추가해준다.
dependencies {
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"
annotationProcessor(
"jakarta.persistence:jakarta.persistence-api",
"jakarta.annotation:jakarta.annotation-api",
"com.querydsl:querydsl-apt:${queryDslVersion}:jakarta")
}
이후 compile.java를 실행해준다.
그러면 Qdomain이 생기게 되고 세팅이 완료된다.
TodoSearch
public interface TodoSearch {
Page<Todo> search1();
}
TodoRepository
public interface TodoRepository extends JpaRepository<Todo, Long>, TodoSearch {
}
TodoSearchImpl
인터페이스의 구현체 클래스의 이름은 '인터페이스+Impl' 형식을 무조건 따라야한다.
@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;
JPQLQuery<Todo> query = from(todo);
query.where(todo.title.contains("1"));
Pageable pageable = PageRequest.of(1, 10, Sort.by("tno").descending());
this.getQuerydsl().applyPagination(pageable, query);
query.fetch(); // 목록 데이터
query.fetchCount();
return null;
}
}
querydsl을 사용하기 위해선 Qtodo처럼 Qdomain을 생성해준 후 JPQLQuery를 통해 쿼리문을 작성해준다.