Spring boot 8주차 개발일지

이동규·2023년 7월 7일

Springboot 기초

목록 보기
8/13

CRUD

웹 서비스의 사용자가 원하는 자원을 관리하는 방법 즉, 자원을 제공, 제작 및 갱신

Create - 생성

Read - 조회

Update - 갱신

Delete - 삭제

Get 요청에는 body의 내용물이 없어야 한다.

현업에서 User data를 List를 사용하는 경우 드물다.

package dev.ldk.crud.post;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@Controller// Controller + ResponseBody= RestController 
@ResponseBody //클래스안에 있는 메소드의 형태가 ResponseBody 형태를 가진다.
@RequestMapping("post")
public class PostController {
   private  static  final Logger logger = LoggerFactory.getLogger(PostController.class);
   private  final List<PostDto> postlist;// 
   //객체를 Arraylist를 사용하지 않고 List를 사용한 이유
   //List는 interface Arraylist는 클래스이다. 
   // ex) interface는 모양 class는 세모
   //데이터의 삽입이나 삭제가 필요한 상황에서 List로 선언한 인스	턴스를 LinkedList(class)로 바꾸게 되면 아무런 문제 없이 		LinkedList(class)의 장점을 취할 수 있다.둘다 같은 interface이기 때문이다.

    public PostController() {
        postlist = new ArrayList<>();// 구현체 
        

    }
    @PostMapping("create")
    public void createPost(@RequestBody PostDto postdto){// Post 요청시 사용할 body 설정하기
        logger.info(postdto.toString());
        this.postlist.add(postdto);

    }
    @GetMapping("read-all")
    public  List<PostDto> readPostAll(){
        logger.info("in read all.");
        return this.postlist;
    }
    @GetMapping("read-one")
    public  PostDto readPostOne(@RequestParam("id") int id){
        logger.info("in read one");
        return this.postlist.get(id);
    }
    @PostMapping("update")
    public void updatePost(@RequestParam("id")int id,
                           @RequestBody PostDto postdto){  //업데이트 할 데이터 query로 설정 추후에 js의 ajax콜 처리를 사용할 수 있을 듯 하다.
         PostDto targetPost= this.postlist.get(id);// 기존 리스트에서 업데이트할 인덱스의 값을 targetPost 저장
         if (postdto.getTitle()!= null){
             targetPost.setTitle(postdto.getTitle());// 업데이트를 할 데이터의 제목이 null 값이 아니면 targetPost title 변경
         }
         if (postdto.getContent() != null){
             targetPost.setContent(postdto.getContent());// 업데이트를 할 데이터의 컨텐츠가 null 값이 아니면 targetPost content 변경
         }
         this.postlist.set(id,targetPost);// post list 업데이트
    }
    @DeleteMapping("delete")
    public void delete(@RequestParam("id") int id){
        this.postlist.remove(id);
    }
}

0개의 댓글