728x90
반응형
SMALL
지금의 포스팅은 Todo를 업데이트하는 리포지토리 서비스 컨트롤러 등을 구현한다.
그럼 제일 먼저할것은 서비스클래스에서 해당 기능을 해주는 update에 관련된 메서드를 만들어주는것이다.
public List<TodoEntity> updateTodo(final TodoEntity entity) {
// 저장할 엔티티가 유효한지 확인한다.
Validate.checkValidate(entity);
// 넘겨받은 엔티티 id를 이용해 Todo Entity를 가져온다. 존재하지 않은 엔티티는 업데이트 할 수 없기때문
final Optional<TodoEntity> original = todoRepository.findById(entity.getId());
original.ifPresent(todo -> {
// 반환된 투두엔티티가 존재하면 값을 새 엔티티값으로 덮어씌운다.
todo.setTitle(entity.getTitle());
todo.setDone(entity.isDone());
// 데이터베이스에 새 값을 저장한다.
todoRepository.save(todo);
});
// 리스트를 보여주는 메서드를 반환해 사용자의 모든 todo리스트로 리턴하게 한다.
return retrieveTodo(entity.getUserId());
}
그리고 컨트롤을 담당하는 CO를 만들어야한다.
package com.unoSpringBoot.study.Controller;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import com.unoSpringBoot.study.DTO.ResponseDTO;
import com.unoSpringBoot.study.DTO.TodoDTO;
import com.unoSpringBoot.study.model.TodoEntity;
import com.unoSpringBoot.study.service.TodoService;
@Service
public class TodoUpdateCO {
@Autowired
private TodoService service;
private final String USER_ID = "KIM_EUN_HO";
public ResponseEntity<?> updateTodo(TodoDTO dto) {
try {
TodoEntity todoEntity = TodoDTO.setEntity(dto);
todoEntity.setUserId(USER_ID);
List<TodoEntity> entities = service.updateTodo(todoEntity);
List<TodoDTO> outDTO = entities.stream().map(TodoDTO::new).collect(Collectors.toList());
ResponseDTO<TodoDTO> response = ResponseDTO.<TodoDTO>builder().data(outDTO).build();
return ResponseEntity.ok().body(response);
} catch (Exception e) {
// TODO: handle exception
ResponseDTO<TodoDTO> response = ResponseDTO.<TodoDTO>builder().error("오류").build();
return ResponseEntity.badRequest().body(response);
}
}
}
간단하다. 대신 계속 유효성검사를 위한 아이디를 계속 상수로 가져오고있는데 나중에
로그인기능이 생기면 없애고 세션값에서 로그인정보를 이용해서 값을 출력하는 방식으로 바꿀예정이다.
그리고 URI를 관리하는 SO에도 해당 CO를 추가해주면된다.
@PutMapping
public ResponseEntity<?> updateTodo(@RequestBody TodoDTO dto) {
return todoUpdateCO.updateTodo(dto);
}
만약 해당 기능을 바꾸고싶다면 SO에서 모든걸 우지끈뚝딱고치는게아닌 해당 CO클래스에서 또는 service에서 수정하면
됩니당
이제 잘 실행되는지 확인해봅시당

포스트형식의 createTodo 로 두개의 글을 추가해주었습니닸!
그리고 아이디와 타이틀, 돈을 모두 복사하고 수정을 해봅시다!
바뀌었습니다!
첫번째 글도 글id를 맞춰서 넣어주고 제목을 수정해서 올렸더니 바뀌었습니다!

728x90
반응형
LIST
'Spring boot 프로젝트 기록 > 1. 백엔드 개발' 카테고리의 다른 글
회원정보 찾기 (0) | 2021.12.10 |
---|---|
서비스 개발(4) - 삭제기능 (0) | 2021.11.28 |
서비스 개발(2) - 전체리스트보기 (0) | 2021.11.28 |
서비스 개발(1) - 글을 추가하는 기능 (0) | 2021.11.26 |
기본 쿼리와 쿼리 작성 방법 (0) | 2021.11.26 |
댓글