본문 바로가기
Back-end

[JPA] 최신순으로 목록 조회

by yeobi 2024. 5. 30.

 

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();
	}

}