230614 JAVA CRUD 메모장

보트·2023년 6월 14일
0

Spring

목록 보기
2/27

Create

문제

@PostMapping("/memos")
    public MemoResponseDto createMemo(@RequestBody MemoRequestDto requestDto){
        Memo memo = new Memo(requestDto);
        // 현재 리스트가 비어있다면 (id = 1), 아니라면 (id = 마지막 id 값 + 1)
        Long maxID = memoList.size()>0? Collections.max(memoList.keySet())+1 : 1;
        memo.setId(maxID);

        // 받아온 시각 설정
        memo.setDate();
        // id를 key 값으로 가지도록 리스트에 추가
        memoList.put(memo.getId(), memo);

        MemoResponseDto memoResponseDto = new MemoResponseDto(memo);

        return memoResponseDto;
    }

Spring 1주차 강의 영상을 참고해 CRUD 중 Create를 구현해 봤다.

title과 date가 제대로 나오지 않았다.

시도

package com.sparta.spring_memo.dto;

import lombok.Getter;

@Getter
public class MemoRequestDto {
    private String username;
    private String contents;
}
public Memo(MemoRequestDto requestDto) {
        this.username = requestDto.getUsername();
        this.contents = requestDto.getContents();
    }

RequestDto의 멤버변수와 Memo 생성자에서 title을 다루지 않았다는 것을 깨달았다.

그리고 이전에 사용했던 날짜 설정 함수를 그대로 가져오느라 함수명을 setDate()로 했더니 구분을 할 수 없었다.

public  String timeNow() {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy/MM/dd h:mm:ss");
        return dateTimeFormatter.format(LocalDateTime.now());
    }

알아보기 쉽도록 함수 명을 바꾸고 MemoController에서

// 받아온 시각 설정
        memo.setDate(memo.timeNow());

시각을 저장하는 방법을 바꿨다.

해결

제목과 날짜가 제대로 나오는 것을 확인했다.

Read

@GetMapping("/memos")
    public List<MemoResponseDto> getMemos(){
        // Map to List
        // stream() -> 앞의 values()를 for 문처럼 하나씩 돌려줌
        // stream()에 의해 하나씩 나오는 객체는 memo
        // 그 memo를 하나의 MemoResponseDto 로 만들어줌
        List<MemoResponseDto> responseDtoList = memoList.values().stream().map(MemoResponseDto::new).toList();

        return responseDtoList;
    }

Create와 마찬가지로 강의 영상을 참고해 구현했다.
잘 잘동하는 것을 확인할 수 있었다.

profile
일주일에 한 번

0개의 댓글