728x90
반응형
2021.06.05 - [🌎Web Application/Spring Boot] - [Spring Boot/IntelliJ] Todo List 구현 1
[Spring Boot/IntelliJ] Todo List 구현 1
본 게시글은 fast campus 강의를 듣고 작성하였습니다. Editor - IntelliJ language - Java framework - Spring Boot Part 1. 프로젝트 생성하기 project 이름은 todo-server Gradle과 Maven의 차이 - Build(소스..
yzlosmik.tistory.com
Part1. Model 설정
위와 같이 model 패키지에 Class들을 생성한다.
package com.example.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
public class TodoEntitiy {
@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;
}
package com.example.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TodoRequest {
private String title;
private Long order;
private Boolean completed;
}
package com.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(TodoEntitiy todoEntitiy) {
this.id = todoEntitiy.getId();
this.title = todoEntitiy.getTitle();
this.order = todoEntitiy.getOrder();
this.completed = todoEntitiy.getCompleted();
this.url = "http://localhost:8080/" + this.id;
}
}
Lombok
자바개발시 자주 사용하는 코드 Getter,Settr, 기본생성자, toString등을 어노테이션으로 자동 생성 해준다.
IntelliJ PlugIn에서 Lombok을 설치 후 재시작 합니다.
그리고 다음 경로에서 Enable annotation processing을 체크합니다.
Part2. Repository 설정
package repository를 생성하고, TodoRepository Interpace를 생성한다.
package com.example.repository;
import com.example.model.TodoEntitiy;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface TodoRepository extends JpaRepository<TodoEntitiy, Long> {
}
Part3. Service 생성
package com.example.service;
import com.example.model.TodoEntitiy;
import com.example.model.TodoRequest;
import com.example.repository.TodoRepository;
import lombok.AllArgsConstructor;
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 repo;
public TodoEntitiy add (TodoRequest request) {
TodoEntitiy todoEntitiy = new TodoEntitiy();
todoEntitiy.setTitle(request.getTitle());
todoEntitiy.setOrder(request.getOrder());
todoEntitiy.setCompleted(request.getCompleted());
TodoEntitiy result = this.repo.save(todoEntitiy); // save메소드는 저장된 결과값을 반환한다.
return result;
}
public TodoEntitiy searchById (Long id) {
TodoEntitiy result = this.repo.findById(id)
.orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
return result;
}
public List<TodoEntitiy> searchAll() {
return this.repo.findAll();
}
public TodoEntitiy updateById(Long id, TodoRequest request) {
TodoEntitiy entitiy = this.searchById(id);
if (request.getTitle() != null) {
entitiy.setTitle(request.getTitle());
}
if (request.getOrder() != null) {
entitiy.setOrder(request.getOrder());
}
if (request.getCompleted() != null) {
entitiy.setCompleted(request.getCompleted());
}
return this.repo.save(entitiy);
}
public void deleteById (Long id) {
this.repo.deleteById(id);
}
public void deleteByAll () {
this.repo.deleteAll();
}
}
728x90
반응형
'⚙️Backend > Spring Boot' 카테고리의 다른 글
[SpringBoot/IntelliJ/Kotlin] GET API (0) | 2021.06.06 |
---|---|
[Spring Boot/IntelliJ] Todo List 구현 3 (0) | 2021.06.06 |
[Spring Boot/IntelliJ] Todo List 구현 1 (0) | 2021.06.05 |