메모장
JPA 저장된 정렬 정보 이용하여 리스트 조회 본문
사용자가 리스트의 정렬정보를 저장하여 새로고침 하여도 정렬정보에 의해 리스트 순서가 유지되길 원했다.
Table: Lesson
Column: sortName, sortType
public List<InfoDTO> selectInfoList(Long lessonSeq) {
return queryFactory
.select(new QInfoDTO(info.infoSeq, info.name, info.age))
.from(info)
.leftJoin(info.lesson, lesson)
.where(lesson.lessonSeq.eq(lessonSeq),
info.delDate.isNull(), lesson.delDate.isNull())
.orderBy(sortInfoList(lessonSeq))
.fetch();
}
private OrderSpecifier<?> sortInfoList(Long lessonSeq) {
Lesson lesson = lessonRepository.findById(lessonSeq)
.orElseThrow(NoSuchElementException::new);
if (Strings.isBlank(lesson.getSortName())
|| Strings.isBlank(lesson.getSortType())) {
return new OrderSpecifier<>(Order.DESC, info.infoSeq);
}
if ("name".equals(lesson.getSortName())) {
if ("asc".equals(lesson.getSortType())) {
return new OrderSpecifier<>(Order.ASC, info.name);
}
return new OrderSpecifier<>(Order.DESC, info.name);
}
if ("age".equals(lesson.getSortName())) {
if ("asc".equals(lesson.getSortType())) {
return new OrderSpecifier<>(Order.ASC, info.age);
}
return new OrderSpecifier<>(Order.DESC, info.age);
}
if ("seq".equals(lesson.getSortName())) {
if ("asc".equals(lesson.getSortType())) {
return new OrderSpecifier<>(Order.ASC, info.infoSeq);
}
return new OrderSpecifier<>(Order.DESC, info.infoSeq);
}
return new OrderSpecifier<>(Order.DESC, info.infoSeq);
}
'Java' 카테고리의 다른 글
Rest Api 응답 (0) | 2022.12.26 |
---|---|
Custom Exception 만들기 (0) | 2022.12.20 |
소수점 0 제거 (0) | 2022.11.24 |
JPA @PrePersist, @PreUpdate (0) | 2022.11.22 |
엑셀 POI (0) | 2022.11.10 |