[TodoEntity.java]
package org.example.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class TodoEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String title;
@Column(name = "todoOrder", nullable = false)
private Long order;
@Column(nullable = false)
private Boolean completed;
}
[TodoRequest.java]
package org.example.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TodoRequest {
private String title;
private Long order;
private Boolean completed;
}
package org.example.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TodoResponse {
private Long id;
private String title;
private Long order;
private Boolean completed;
private String url;
public TodoResponse(TodoEntity todoEntity){
this.id = todoEntity.getId();
this.title = todoEntity.getTitle();
this.order = todoEntity.getOrder();
this.completed = todoEntity.getCompleted();
this.url = "http://localhost:8080/" + this.id;
}
}
: 데이터를 주고받는 방식인 인터페이스임 (실제 저장소는 아님)
package org.example.repository;
import org.example.model.TodoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface TodoRepository extends JpaRepository<TodoEntity, Long> {
}
todo list 필요기능
1. 목록에 아이템 추가
2. 목록 중 특정 아이템 조회
3. 전체 목록 조회
4. 목록 중 특정 아이템 수정
5. 목록 중 특정 아이템 삭제
6. 전체 목록 삭제
package org.example.service;
import lombok.AllArgsConstructor;
import org.example.repository.model.TodoEntity;
import org.example.repository.model.TodoRequest;
import org.example.repository.model.TodoResponse;
import org.example.repository.TodoRepository;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.server.ResponseStatusException;
import java.util.List;
@Service
@AllArgsConstructor
public class TodoService {
private final TodoRepository todoRepository;
// 1. 목록에 아이템 추가
public TodoEntity add(TodoRequest request) {
TodoEntity todoEntity = new TodoEntity();
todoEntity.setTitle(request.getTitle());
todoEntity.setOrder(request.getOrder());
todoEntity.setCompleted(request.getCompleted());
return this.todoRepository.save(todoEntity); // <S extends T> S save(S entity); >>> TodoEntity값 return함
}
// 2. 목록 중 특정 아이템 조회
public TodoEntity searchById(Long id) {
return this.todoRepository.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND)); //>>>>@@@@@@
}
// 3. 전체 목록 조회
public List<TodoEntity> searchAll() {
return this.todoRepository.findAll();
}
// 4. 목록 중 특정 아이템 수정
public TodoEntity updateById(Long id, TodoRequest request) {
TodoEntity todoEntity = this.searchById(id);
if (request.getTitle() != null){
todoEntity.setTitle(request.getTitle());
}
if(request.getOrder() != null){
todoEntity.setOrder(request.getOrder());
}
if(request.getCompleted() != null){
todoEntity.setCompleted(request.getCompleted());
}
return this.todoRepository.save(todoEntity);
}
// 5. 목록 중 특정 아이템 삭제
public void deleteById(Long id){
this.todoRepository.deleteById(id);
}
// 6. 전체 목록 삭제
public void deleteAll(){
this.todoRepository.deleteAll();
}
}
ch4~5. 리팩토링, 디버깅 (0) | 2022.07.23 |
---|---|
ch3.6~7 컨트롤러 구현, 테스트코드 작성 (0) | 2022.07.21 |
ch3.1~ todo_ap server (0) | 2022.07.13 |
댓글 영역