개발 기록/도서관 관리 시스템

[Library Management System] 25.09.03 (36일)

dev.jelee 2025. 9. 3. 14:21

[ 작업한 내용 ]

1. 관리자-공지사항 전체 목록 조회 기능 추가

1-1) AdminNoticeListResDTO

- 전체 목록 응답 DTO

- id, title, createdDate, updatedDate, writer 필드

- Notice를 파라미터로 받는 생성자 함수.


1-2) messages.properties

- success.notice.list_fetched=공지사항 목록 조회가 완료되었습니다.


1-3) NoticeSuccessCode

- NOTICE_LIST_FETCHED(HttpStatus.OK, "NOTICE_204", "success.notice.list_fetched");


1-4) AdminNoticeController

- GET방식을 사용하여 @RequestParam() int page, int size를 파라미터로 요청받는다.

- Page<AdminNoticeListResDTO> 타입의 responseDTO 생성. responseDTO에는 service 계층으로 page, size를 전달하여 데이터를 가져와 저장.

- 성공 메시지와 responseDTO를 클라이언트로 반환.


1-5) AdminNoticeService

- controller에서 전달받은 page, size로 Pageable를 사용하여 몇페이지의 몇개의 데이터를 보여줄지 정의하는 객체 생성.

- Page<Notice> result 생성하고 레포지토리의 .findAll() 메서드를 사용하여 pageable을 전달하여 데이터 가져와 저장.

- List타입으로 변환 후 응답시에는 new PageImpl<> 을 사용하여 controller로 데이터 반한.


2. 관리자-공지사항 검색 목록 조회 기능 추가

2-1) messages.properteis

- success.notice.fetched=공지사항 조회가 완료되었습니다.


2-2) NoticeSuccessCode

- NOTICE_FETCHED(HttpStatus.OK, "NOTICE_205", "success.notice.fetched");


2-3) AdminNoticeSearchResDTO

- 검색 결과 응답 DTO

- id, title, createdDate, updatedDate, writer

- Notice를 파라미터로 받는 생성자함수.


2-4) AdminNoticeController

- @RequestParam으로 keyword, page, size를 파라미터로 받기.

- servicer 계층으로 keyword, page, size를 보낸 다음 결과를 Page<AdminNoticeSearchResDTO>타입의 responseDTO에 저장.

- 성공 메시지와 responseDTO를 클라이언트로 반환.


2-5) AdminNoticeService

- keyword, page, size를 파라미터로 받고, Page<AdminNoticeSearchResDTO>타입의 searchNotices 메서드 생성.

- Pageable를 사용하여 페이징 정보를 생성하고, repository를 통해 keyword, pageable을 가지고 해당 데이터를 가져와 Page<Notice>타입의 result에 저장.

- result가 비어있는지 체크하고 예외처리.

- result에 담긴 엔티티 리스트를 DTO 리스트로 변환시키기.

- 반환할 때에는 DTO 리스트를 Page 형식으로 랩핑하여 반환.


2-6) NoticeReository

- Page<Notice> 타입의 keyword, pagealbe를 인자로 받는 findByTitleContainingIgnoreCase 메서드 추가.


commit
공지사항 전체 목록 조회(좌), 공지사항 검색 목록 조회(우)