728x90
๋ฐ์ํ
๐ฅ querydsl ์ค์ ์ ํตํ Qํด๋์ค ์๋ ๋ฐ ์คํ ํ์ธ๊น์ง.
# springboot 2.7.0
build.gradle
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
plugins {
id 'org.springframework.boot' version '2.7.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
dependencies {
// querydsl
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
annotationProcessor(
"jakarta.persistence:jakarta.persistence-api",
"jakarta.annotation:jakarta.annotation-api",
)
}
// query dsl
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
# QuerydslConfig.java
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
@Configuration
public class QuerydslConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}
Entity to Qclass
import lombok.*;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@Builder
@Getter
@ToString(exclude = "password")
@AllArgsConstructor
@NoArgsConstructor
public class Chief {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String email;
private String password;
private String address;
private String phone;
@Builder
public static Chief createChief(long id, String email, String password, String address, String phone){
return new Chief(id,email,password,address,phone);
}
}
Dto to Qclass
import com.querydsl.core.annotations.QueryProjection;
import lombok.*;
@Getter
@Setter
@NoArgsConstructor
@ToString
public class ChiefDto {
private long id;
private String email;
private String password;
private String address;
private String phone;
@QueryProjection // querydsl
public ChiefDto(long id, String email, String password, String address, String phone) {
this.id = id;
this.email = email;
this.password = password;
this.address = address;
this.phone = phone;
}
}
Repository ๋๋ RepositoryCustome ์ธํ .
์์์ ํํผํ๊ธฐ์ํด bean์ผ๋ก ๋ฑ๋กํ JPAQueryFactory๋ฅผ ์ฌ์ฉํจ.
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
/*
// ๊ธฐ์กด ๋ฐฉ๋ฒ 1.
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom {}
// ๊ธฐ์กด ๋ฐฉ๋ฒ2
public class MemberRepositoryCustom extends QuerydslRepositorySupport {}
*/
@Repository
@RequiredArgsConstructor
public class ChiefRepositoryCustom {
private final JPAQueryFactory queryFactory;
public ChiefDto searchByKeyword(String keyword) {
return null;
// return queryFactory
// .select(new ChiefDto(~~~))
// .from()
// .fetch(); ์ ๊ฐ์ ํ์์ผ๋ก ์ฌ์ฉ.
}
}
settings ์ฒดํฌ
gradle - orther - compileQuerydsl ์คํ :
์คํ๊น์ง.
์ค์ ์ ์๋ฌ๊ฐ ์๋ค๋ฉด,
https://devfoxstar.github.io/java/intellij-querydsl-error/
์ฐธ์กฐํฉ์๋ค.
# ๋ ํผ๋ฐ์ค ๋ฌธ์
http://querydsl.com/static/querydsl/4.0.1/reference/ko-KR/html_single/#intro
320x100
๋ฐ์ํ
'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Gabage Collection (0) | 2022.12.13 |
---|---|
java directory copy / progress bar (0) | 2022.06.11 |
jwt ํ ํฐ ์ธ์ฆ + Interceptor ๊ฒ์ฆ. (0) | 2022.05.22 |
java ์ ๊ท ํํ์ (0) | 2022.05.09 |
java Stream (0) | 2022.03.08 |