Controller
/** 최신 순으로 상담 목록 조회
*
* @return ResponseEntity<List < CounselingResponseDTO>> 상담 목록
* @author
*/
@GetMapping("/")
public ResponseEntity<List<CounselingResponseDTO>> getAllCounseling() {
List<CounselingResponseDTO> counselingList = counselingService.getAllCounseling();
return new ResponseEntity<>(counselingList, HttpStatus.OK);
}
Service
/** 최신 순으로 상담 목록 조회
*
* @return List<CounselingResponseDTO> 상담 목록
* @author
*/
@Override
@Transactional(readOnly = true)
public List<CounselingResponseDTO> getAllCounseling() {
return counselingRepository.findAllByOrderBySentDateDesc().stream()
.map(CounselingResponseDTO::new)
.collect(Collectors.toList());
}
counselingRepository.findAllByOrderBySentDateDesc().stream()
.map(CounselingResponseDTO::new)
.collect(Collectors.toList());
= List<Counseling>으로 반환된 리스트 값을 List<CounselingResponseDTO> 형식으로 변환
Repository
public interface CounselingRepository extends JpaRepository<Counseling, Integer> {
List<Counseling> findAllByOrderBySentDateDesc();
}
findAllByOrderBySentDateDesc(); = 작성된 시간을 기준으로 내림차순 정렬하여 모든 상담 리스트를 최신순으로 반환
ResponseDTO
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CounselingResponseDTO {
private Integer counselingId;
private User user;
private String category;
private String content;
private Boolean isAnswered;
private LocalDateTime sentDate;
public CounselingResponseDTO(Counseling counseling) {
this.counselingId = counseling.getCounselingId();
this.user = counseling.getUser();
this.category = counseling.getCategory();
this.content = counseling.getContent();
this.isAnswered = counseling.getIsAnswered();
this.sentDate = counseling.getSentDate();
}
}
'Back-end' 카테고리의 다른 글
[JPA] JPA에서 On Delete Cascade 제약조건 사용하기 (1) | 2024.06.03 |
---|---|
[UnitTest] JUnit과 Mockito 기반 Spring 단위테스트 (2) | 2024.05.31 |
[Spring Security] 로그인한 사용자의 아이디와 권한(Role) 가져오기 (0) | 2024.05.20 |
[JPA] 양방향 매핑 (0) | 2024.05.13 |
Code block test (0) | 2024.05.13 |