꼬물꼬물

QueryDSL 본문

코딩/환경설정

QueryDSL

멩주 2022. 3. 24. 00:00
// build.gradle

buildscript {
	ext {
		queryDslVersion = "5.0.0"
	}
}

plugins {
	// ...
	id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

dependencies {
	// ...
	implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
	implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
}

def querydslDir = "$buildDir/generated/querydsl"

querydsl {
	jpa = true
	querydslSourcesDir = querydslDir
}
sourceSets {
	main.java.srcDir querydslDir
}
compileQuerydsl{
	options.annotationProcessorPath = configurations.querydsl
}
configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
	querydsl.extendsFrom compileClasspath
}

사용 예)

    /**
     * @author : 박민주
     * @date : 2022-03-23 오후 5:52
     **/
    public List<Game> findGameByFilter(String gameName, Integer gamePlayer, Integer gameTime, Double gameWeight, Integer gameAge, Double gameScore, List<String> gameCategory) {

        JPQLQuery<Game> query = new JPAQuery<>(em);
        QGame qGame = new QGame("Game");

        BooleanBuilder builder = new BooleanBuilder();
        if(gameName != null){
            builder.and(qGame.gameName.contains(gameName));
        }
        if(gamePlayer != null){
            builder.and(qGame.gameMinPlayer.goe(gamePlayer));
        }
        if(gameTime != null){
            builder.and(qGame.gameMaxTime.loe(gameTime));
        }
        if(gameAge != null){
            builder.and(qGame.gameAge.loe(gameAge));
        }
        if(gameWeight != null){
            builder.and(qGame.gameWeight.loe(gameWeight));
        }
        if(gameScore != null){
            builder.and(qGame.gameTotalScore.goe(gameScore));
        }
        if(!gameCategory.isEmpty()){
            for (String c : gameCategory) {
                builder.and(qGame.gameCategory.contains(c));
            }
        }

        List<Game> gameList = query.from(qGame)
                .where(builder)
                .fetch();
        return gameList;
    }

'코딩 > 환경설정' 카테고리의 다른 글

DBeaver MariaDB 연결하기  (0) 2022.06.13
Spring Security 설정하기  (0) 2022.04.24
MariaDB/Intellij 연결  (0) 2022.01.28
Lombok(롬복) 설정  (0) 2022.01.19
프로세스 종료  (0) 2022.01.12