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 확인
기능이 전부 정상적으로 동작된다 이제 지금까지 만든 코드들을 조금 더 다듬어보면 될 거 같습니다
'예제를 만들자 뚱땅뚱땅' 카테고리의 다른 글
API 만들기 연습 #6 유효성 검증 (0) | 2022.08.30 |
---|---|
API 만들기 연습 #5 CustomException (0) | 2022.08.29 |
API 만들기 연습 #4 페이징 (0) | 2022.08.26 |
API 만들기 연습 #2 등록을 해보자 (0) | 2022.08.24 |
#1 CRUD 기능을 하는 API 서버 만들어보기 (0) | 2022.08.24 |