예제를 만들자 뚱땅뚱땅

API 만들기 연습 #3 update , delete

NEWDODORIPYO 2022. 8. 25. 17:13

insert 기능은 만들기 성공했으니 이제 update와 delete 기능을 만들어보자

ApiRepository

package com.apiservice.repository;

import com.apiservice.model.ApiDTO;
import org.springframework.stereotype.Repository;

@Repository
public interface ApiRepository {

    void insert(ApiDTO apiDTO);

    void update(ApiDTO apiDTO);

    void delete(Integer memberNumber);
    
}
  • update 는 객체 전체를 수정할 수 있기에 DTO를 매개변수로 받는다
  • delete는 pk값으로 처리하기에 pk인 memberNumber을 받는다

ApiRepository.xml

  • ApiRepository 에서 만들어준 update와 delete의 sql을 작성해보자

http://mybatis.org/dtd/mybatis-3-mapper.dtd>">



    
        insert into api(member_id , member_pw , member_name , member_phone , advert)
        values (#{memberId} , #{memberPw} , #{memberName} , #{memberPhone} , #{advert})
    

    
        update api
        set member_id = #{memberId},
            member_pw = #{memberPw},
            member_name = #{memberName},
            member_phone = #{memberPhone},
            advert = #{advert},
            update_date = now()
        where member_number = #{memberNumber}
    

    
        delete
        from api
        where member_number = #{memberNumber}

APiService

package com.apiservice.service;

import com.apiservice.model.ApiDTO;

public interface ApiService {

    void register(ApiDTO apiDTO);

    void update(ApiDTO apiDTO);

    void delete(Integer memberNumber);
}

APiServiceImpl

package com.apiservice.service;

import com.apiservice.model.ApiDTO;
import com.apiservice.repository.ApiRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;

@Service
@Log4j2
@RequiredArgsConstructor
public class ApiServiceImpl implements ApiService {

    private final ApiRepository apiRepository;

    @Override
    public void register(ApiDTO apiDTO) {

        log.info("service insert");
        log.info(apiDTO);

        apiRepository.insert(apiDTO);

    }

    @Override
    public void update(ApiDTO apiDTO) {
        log.info("update service");
        log.info(apiDTO);

        apiRepository.update(apiDTO);
    }

    @Override
    public void delete(Integer memberNumber) {
        log.info("delete service");
        log.info(memberNumber);

        apiRepository.delete(memberNumber);
    }
}
  • insert , update , delete 모두 아직은 예외에 대한 처리는 없는 상태이다 우선은 성공의 방향으로만 잡 고작 성하 고있다

ApuController

package com.apiservice.controller;

import com.apiservice.model.ApiDTO;
import com.apiservice.service.ApiService;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

@RestController
@RequestMapping("/api/")
@Log4j2
@RequiredArgsConstructor
public class ApiController {

    private final ApiService apiService;

    @ApiOperation("Api Post register")
    @PostMapping("/register")
    public ResponseEntity registerPost(ApiDTO apiDTO){
        log.info(apiDTO);
        log.info("controller register");

        apiService.register(apiDTO);

        return new ResponseEntity(HttpStatus.OK);
    }

    @ApiOperation("api post update")
    @PostMapping("/update/{memberNumber}")
    public ResponseEntity update(@PathVariable("memberNumber") Integer memberNumber , ApiDTO apiDTO){

        log.info("-----------------------");
        log.info("update");
        log.info("------------------");
        apiService.update(apiDTO);

        return new ResponseEntity(HttpStatus.OK);
    }

    @ApiOperation("api post delete")
    @PostMapping("/delete/{memberNumber}")
    public ResponseEntity delete(@PathVariable("memberNumber") Integer memberNumber){
        log.info("-----------------------");
        log.info("delete");
        log.info("------------------");

        apiService.delete(memberNumber);

        return new ResponseEntity(HttpStatus.OK);
    }

}
  • update , delete 둘 다 PathVariable로 pk 값을 받아와 처리하고 있다
  • 기본적인 update와 delete의 기능도 완성했으니 swagger-ui에서 테스트해보자

updatd 테스트

DB 확인

delete 테스트

DB 확인

기능이 전부 정상적으로 동작된다 이제 지금까지 만든 코드들을 조금 더 다듬어보면 될 거 같습니다