Spring Boot API 서버 테스트 7

DELETE / CRUD 완성

Posted by ETHAN KIM on September 21, 2022 · 6 mins read
Java Server

PUT API 코드 추가

컨트롤러 delete 메소드 추가 delete 대상 id = > @Path @Path 어노테이션을 통해 파라미터 체크
서비스, dao 인터페이스에 메소드 등록
mapper.xml delete 쿼리 등록

MembersController.java
package com.example.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import com.example.demo.dto.Member;
import com.example.demo.service.MembersService;

@RestController
public class MembersController {
	
	@Autowired
	private MembersService service;
	
  ...
	
	@DeleteMapping(path="/members/{id}")
	public Integer deleteMember(@PathVariable Integer id) {
		return service.deleteMember(id);
	}
}


MembersDAO.java
package com.example.demo.dao;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.example.demo.dto.Member;

@Repository
public interface MembersDAO {
	List<Member> getAllMembers();
	Member getMember(Integer id);
	void insertMember(Member member);
  Integer updateMember(@Param("id") Integer id, @Param("member") Member member);
  Integer deleteMember(Integer id);
}


MembersDTO/Member.java
package com.example.demo.dto;

public class Member {
	private Integer id;
	private String name;
	private Integer age;
	private String dept;
	
	public Member() {
		super();
	}
	
	public Integer getId() {
		return id;
	}
	
	public void setId(Integer id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
	
	public String getDept() {
		return dept;
	}
	
	public void setDept(String dept) {
		this.dept = dept;
	}
	
	@Override
	public String toString() {
		return "Member [id=" + id + ", name=" + name + ", age=" + age + ", dept=" + dept + "]";
	}

}


MembersService.java
package com.example.demo.service;

import java.util.List;

import com.example.demo.dto.Member;

public interface MembersService {
	List<Member> getAllMembers();
	Member getMember(Integer id);
	void insertMember(Member member);
  Member updateMember(Integer id, Member member);
  Integer deleteMember(Integer id);
}


MembersServiceImpl.java
package com.example.demo.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.dao.MembersDAO;
import com.example.demo.dto.Member;
import com.example.demo.service.MembersService;

@Service
public class MembersServiceImpl implements MembersService{
	@Autowired
	private MembersDAO dao;
	
  ...
  
	@Override
	public Integer deleteMember(Integer id) {
		return dao.deleteMember(id);
	}
}


mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.dao.MembersDAO">
  
	...
  
	<!--  삭제한 행의 수를 반환 -->
	<delete id="deleteMember" parameterType="int">
		DELETE FROM members WHERE id = #{id}
	</delete>
</mapper>


API 테스트

url : DELETE/ http://localhost:8080/members/5
parameters : 5 (URL Params)
type : INT
return : 쿼리 반환 카운트 1 일 경우 성공 / 0일 경우 실패


삭제 전 데이터


삭제 시 화면


성공 후 다시 조회