1. build.gradle 설정 추가
plugins {
// ---- 생략 -----
// 동적쿼리 querydsl 관련 설정 추가
id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}
dependencies {
// -----생략 ------
// querydsl 관련 설정 추가
implementation 'com.querydsl:querydsl-jpa'
}
// 가장 하단
// querydsl 설정 추가
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa= true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
2. 우측 Gradle -> Tasks -> others -> compileQuerydsl 실행
3. 프로젝트 내에 build - generated 폴더하위에 "querydslDir" 변수로 설정한 폴더명칭확인.
4. Querydsl 관련 repository 상속
// < 엔티티클래스 , PK객체 타입 >
public interface BoardRepository extends JpaRepository<Board, Long>,
QuerydslPredicateExecutor {
}
5. 간단한 예시 테스트
@Test
public void TestQuerydsl() {
String keyword = "1" // 검색내용
// Q도메인 객체 생성
QBoard qBoard = QBoard.board;
// 검색쿼리용 컨테이너 생성
BooleanBuilder builder = new BooleanBuilder();
// 쿼리내용을 결정
// 제목에 1을 포함하는 게시글 찾기
BooleanExpression expression1 = qBoard.title.contatin(keyword);
// 자세한 내용은 API 참조
// gt = greater than 줄임.
// where bno > 0
BooleanExpression expression2 = qBoard.bno.gt(0);
// 두 조건을 합침
BooleanExpression exAll = expression1.and(expression2);
builder.and(exAll);
Page<Board> list = repository.findAll(builder, pageable);
list.stream().foreach( i -> log.info(i) );
}
'Back-End > Spring' 카테고리의 다른 글
(2) QuerydslRepositorySupport - Tuple 활용 (0) | 2021.03.09 |
---|---|
(1) QueryRepositorySupport (0) | 2021.03.09 |
thymeleaf 사용 시 날짜포맷팅 (2) | 2021.03.01 |
테스트폴더에 lombok 적용 (0) | 2021.03.01 |
Spring에서 XML을 이용한 CronExpression 사용방법 (0) | 2020.07.04 |