From 60dffb16f345a7e71bebf79cd35c4b6e1227c6c3 Mon Sep 17 00:00:00 2001 From: sanghun <2002lkw@naver.com> Date: Mon, 8 Aug 2022 17:58:02 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=95=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=ED=95=B4=EB=B3=B4=EA=B8=B0=20with=20querydsl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle.kts | 8 ++ .../generated/pj/circles/domain/QCircle.java | 83 +++++++++++++++++++ .../generated/pj/circles/domain/QEmail.java | 45 ++++++++++ .../generated/pj/circles/domain/QMember.java | 61 ++++++++++++++ .../pj/circles/domain/QMemberLikeCircle.java | 54 ++++++++++++ .../generated/pj/circles/domain/QPhoto.java | 57 +++++++++++++ .../pj/circles/config/QueryDslConfig.java | 19 +++++ .../circles/repository/CircleRepository.java | 2 +- .../repository/CircleRepositoryCustom.java | 9 ++ .../repository/CircleRepositoryImpl.java | 23 +++++ .../pj/circles/service/CircleService.java | 4 +- 11 files changed, 362 insertions(+), 3 deletions(-) create mode 100644 src/main/generated/pj/circles/domain/QCircle.java create mode 100644 src/main/generated/pj/circles/domain/QEmail.java create mode 100644 src/main/generated/pj/circles/domain/QMember.java create mode 100644 src/main/generated/pj/circles/domain/QMemberLikeCircle.java create mode 100644 src/main/generated/pj/circles/domain/QPhoto.java create mode 100644 src/main/java/pj/circles/config/QueryDslConfig.java create mode 100644 src/main/java/pj/circles/repository/CircleRepositoryCustom.java create mode 100644 src/main/java/pj/circles/repository/CircleRepositoryImpl.java diff --git a/build.gradle.kts b/build.gradle.kts index 23a85f2..84c2de6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -34,6 +34,14 @@ dependencies { implementation ("org.springframework.boot:spring-boot-starter-mail") implementation ("org.springframework.boot:spring-boot-starter-security") implementation ("io.jsonwebtoken:jjwt:0.2") + + implementation("com.querydsl:querydsl-core") + implementation("com.querydsl:querydsl-jpa") + + annotationProcessor("com.querydsl:querydsl-apt:${dependencyManagement.importedProperties["querydsl.version"]}:jpa") // querydsl JPAAnnotationProcessor 사용 지정 + annotationProcessor("jakarta.persistence:jakarta.persistence-api") // java.lang.NoClassDefFoundError(javax.annotation.Entity) 발생 대응 + annotationProcessor("jakarta.annotation:jakarta.annotation-api") // java.lang.NoClassDefFoundError (javax.annotation.Generated) 발생 대응 + implementation ("io.springfox:springfox-boot-starter:3.0.0") compileOnly ("org.projectlombok:lombok") runtimeOnly ("com.h2database:h2") diff --git a/src/main/generated/pj/circles/domain/QCircle.java b/src/main/generated/pj/circles/domain/QCircle.java new file mode 100644 index 0000000..e1b1bab --- /dev/null +++ b/src/main/generated/pj/circles/domain/QCircle.java @@ -0,0 +1,83 @@ +package pj.circles.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QCircle is a Querydsl query type for Circle + */ +@Generated("com.querydsl.codegen.EntitySerializer") +public class QCircle extends EntityPathBase { + + private static final long serialVersionUID = 2090783579L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QCircle circle = new QCircle("circle"); + + public final StringPath address = createString("address"); + + public final StringPath cafeLink = createString("cafeLink"); + + public final EnumPath circleCategory = createEnum("circleCategory", CircleCategory.class); + + public final EnumPath circleDivision = createEnum("circleDivision", CircleDivision.class); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath information = createString("information"); + + public final StringPath introduce = createString("introduce"); + + public final StringPath link = createString("link"); + + public final QMember member; + + public final ListPath memberLikeCircles = this.createList("memberLikeCircles", MemberLikeCircle.class, QMemberLikeCircle.class, PathInits.DIRECT2); + + public final StringPath name = createString("name"); + + public final StringPath oneLineIntroduce = createString("oneLineIntroduce"); + + public final StringPath openKakaoLink = createString("openKakaoLink"); + + public final StringPath phoneNumber = createString("phoneNumber"); + + public final ListPath photos = this.createList("photos", Photo.class, QPhoto.class, PathInits.DIRECT2); + + public final BooleanPath recruit = createBoolean("recruit"); + + public final DateTimePath recruitEndDate = createDateTime("recruitEndDate", java.time.LocalDateTime.class); + + public final DateTimePath recruitStartDate = createDateTime("recruitStartDate", java.time.LocalDateTime.class); + + public QCircle(String variable) { + this(Circle.class, forVariable(variable), INITS); + } + + public QCircle(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QCircle(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QCircle(PathMetadata metadata, PathInits inits) { + this(Circle.class, metadata, inits); + } + + public QCircle(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.member = inits.isInitialized("member") ? new QMember(forProperty("member"), inits.get("member")) : null; + } + +} + diff --git a/src/main/generated/pj/circles/domain/QEmail.java b/src/main/generated/pj/circles/domain/QEmail.java new file mode 100644 index 0000000..26209fd --- /dev/null +++ b/src/main/generated/pj/circles/domain/QEmail.java @@ -0,0 +1,45 @@ +package pj.circles.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.Generated; +import com.querydsl.core.types.Path; + + +/** + * QEmail is a Querydsl query type for Email + */ +@Generated("com.querydsl.codegen.EntitySerializer") +public class QEmail extends EntityPathBase { + + private static final long serialVersionUID = 1870510001L; + + public static final QEmail email1 = new QEmail("email1"); + + public final StringPath code = createString("code"); + + public final StringPath email = createString("email"); + + public final NumberPath id = createNumber("id", Long.class); + + public final BooleanPath isCheck = createBoolean("isCheck"); + + public final BooleanPath isJoin = createBoolean("isJoin"); + + public QEmail(String variable) { + super(Email.class, forVariable(variable)); + } + + public QEmail(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QEmail(PathMetadata metadata) { + super(Email.class, metadata); + } + +} + diff --git a/src/main/generated/pj/circles/domain/QMember.java b/src/main/generated/pj/circles/domain/QMember.java new file mode 100644 index 0000000..f28e4ac --- /dev/null +++ b/src/main/generated/pj/circles/domain/QMember.java @@ -0,0 +1,61 @@ +package pj.circles.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QMember is a Querydsl query type for Member + */ +@Generated("com.querydsl.codegen.EntitySerializer") +public class QMember extends EntityPathBase { + + private static final long serialVersionUID = -1921736411L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QMember member = new QMember("member1"); + + public final QCircle circle; + + public final StringPath email = createString("email"); + + public final NumberPath id = createNumber("id", Long.class); + + public final ListPath memberLikeCircles = this.createList("memberLikeCircles", MemberLikeCircle.class, QMemberLikeCircle.class, PathInits.DIRECT2); + + public final StringPath nickName = createString("nickName"); + + public final StringPath password = createString("password"); + + public final SetPath roles = this.createSet("roles", String.class, StringPath.class, PathInits.DIRECT2); + + public QMember(String variable) { + this(Member.class, forVariable(variable), INITS); + } + + public QMember(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QMember(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QMember(PathMetadata metadata, PathInits inits) { + this(Member.class, metadata, inits); + } + + public QMember(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.circle = inits.isInitialized("circle") ? new QCircle(forProperty("circle"), inits.get("circle")) : null; + } + +} + diff --git a/src/main/generated/pj/circles/domain/QMemberLikeCircle.java b/src/main/generated/pj/circles/domain/QMemberLikeCircle.java new file mode 100644 index 0000000..ec0a4f3 --- /dev/null +++ b/src/main/generated/pj/circles/domain/QMemberLikeCircle.java @@ -0,0 +1,54 @@ +package pj.circles.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QMemberLikeCircle is a Querydsl query type for MemberLikeCircle + */ +@Generated("com.querydsl.codegen.EntitySerializer") +public class QMemberLikeCircle extends EntityPathBase { + + private static final long serialVersionUID = -1106174388L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QMemberLikeCircle memberLikeCircle = new QMemberLikeCircle("memberLikeCircle"); + + public final QCircle circle; + + public final NumberPath id = createNumber("id", Long.class); + + public final QMember member; + + public QMemberLikeCircle(String variable) { + this(MemberLikeCircle.class, forVariable(variable), INITS); + } + + public QMemberLikeCircle(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QMemberLikeCircle(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QMemberLikeCircle(PathMetadata metadata, PathInits inits) { + this(MemberLikeCircle.class, metadata, inits); + } + + public QMemberLikeCircle(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.circle = inits.isInitialized("circle") ? new QCircle(forProperty("circle"), inits.get("circle")) : null; + this.member = inits.isInitialized("member") ? new QMember(forProperty("member"), inits.get("member")) : null; + } + +} + diff --git a/src/main/generated/pj/circles/domain/QPhoto.java b/src/main/generated/pj/circles/domain/QPhoto.java new file mode 100644 index 0000000..e3bf1b4 --- /dev/null +++ b/src/main/generated/pj/circles/domain/QPhoto.java @@ -0,0 +1,57 @@ +package pj.circles.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QPhoto is a Querydsl query type for Photo + */ +@Generated("com.querydsl.codegen.EntitySerializer") +public class QPhoto extends EntityPathBase { + + private static final long serialVersionUID = 1880533575L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QPhoto photo = new QPhoto("photo"); + + public final QCircle circle; + + public final NumberPath id = createNumber("id", Long.class); + + public final EnumPath photoType = createEnum("photoType", PhotoType.class); + + public final StringPath storeFileName = createString("storeFileName"); + + public final StringPath uploadFileName = createString("uploadFileName"); + + public QPhoto(String variable) { + this(Photo.class, forVariable(variable), INITS); + } + + public QPhoto(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QPhoto(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QPhoto(PathMetadata metadata, PathInits inits) { + this(Photo.class, metadata, inits); + } + + public QPhoto(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.circle = inits.isInitialized("circle") ? new QCircle(forProperty("circle"), inits.get("circle")) : null; + } + +} + diff --git a/src/main/java/pj/circles/config/QueryDslConfig.java b/src/main/java/pj/circles/config/QueryDslConfig.java new file mode 100644 index 0000000..1124629 --- /dev/null +++ b/src/main/java/pj/circles/config/QueryDslConfig.java @@ -0,0 +1,19 @@ +package pj.circles.config; + +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 + public EntityManager em; + + @Bean + public JPAQueryFactory jpaQueryFactory(){ + return new JPAQueryFactory(em); + } +} diff --git a/src/main/java/pj/circles/repository/CircleRepository.java b/src/main/java/pj/circles/repository/CircleRepository.java index d76d206..bfbc9b6 100644 --- a/src/main/java/pj/circles/repository/CircleRepository.java +++ b/src/main/java/pj/circles/repository/CircleRepository.java @@ -7,7 +7,7 @@ import java.util.List; -public interface CircleRepository extends JpaRepository { +public interface CircleRepository extends JpaRepository, CircleRepositoryCustom { List findByCircleCategory(CircleCategory circleCategory); List findByCircleDivision(CircleDivision circleDivision); diff --git a/src/main/java/pj/circles/repository/CircleRepositoryCustom.java b/src/main/java/pj/circles/repository/CircleRepositoryCustom.java new file mode 100644 index 0000000..4fdabbc --- /dev/null +++ b/src/main/java/pj/circles/repository/CircleRepositoryCustom.java @@ -0,0 +1,9 @@ +package pj.circles.repository; + +import pj.circles.domain.Circle; + +import java.util.List; + +public interface CircleRepositoryCustom { + List getList(int page); +} diff --git a/src/main/java/pj/circles/repository/CircleRepositoryImpl.java b/src/main/java/pj/circles/repository/CircleRepositoryImpl.java new file mode 100644 index 0000000..ee90372 --- /dev/null +++ b/src/main/java/pj/circles/repository/CircleRepositoryImpl.java @@ -0,0 +1,23 @@ +package pj.circles.repository; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import pj.circles.domain.Circle; +import pj.circles.domain.QCircle; + +import java.util.List; + +@RequiredArgsConstructor +public class CircleRepositoryImpl implements CircleRepositoryCustom{ + + private final JPAQueryFactory jpaQueryFactory; + + + @Override + public List getList(int page) { + return jpaQueryFactory.selectFrom(QCircle.circle) + .limit(5) + .offset((long) page*5) + .fetch(); + } +} diff --git a/src/main/java/pj/circles/service/CircleService.java b/src/main/java/pj/circles/service/CircleService.java index 346a8d4..4ae4661 100644 --- a/src/main/java/pj/circles/service/CircleService.java +++ b/src/main/java/pj/circles/service/CircleService.java @@ -43,8 +43,8 @@ public Circle findById(Long circleId){ public List findAll(){ return circleRepository.findAll(); } - public Page findAllPage(Pageable pageable){ - return circleRepository.findAll(pageable); + public List findAllPage(Pageable pageable){ + return circleRepository.getList(pageable.getPageNumber()); } public List findByCircleCategory(CircleCategory circleCategory){ return circleRepository.findByCircleCategory(circleCategory);