개발

[Spring Boot] 회원 정보 조회 및 삭제

changha. 2023. 2. 12. 12:11

이전 게시글https://changha-dev.tistory.com/149

 

[Spring Boot] 스프링 부트 회원 목록 출력하기

이전 게시글 https://changha-dev.tistory.com/148 [Spring Boot] 스프링 부트 로그인 구현 이전 게시글 https://changha-dev.tistory.com/147 [Spring Boot] MySQL DB와 연동하기 이전 게시글에서 https://changha-dev.tistory.com/146 [Spr

changha-dev.tistory.com

에 이어서 

 

이번 시간에는 회원 정보를 조회 및 삭제 할 수 있는 기능을 간단히 구현해보겠습니다. 

 

조회 할 때 이전 리스트 구현과 약간 다른점은 

리스트에서는 memberDTO 전체를 가져와야 되므로 findAll메서드를 사용했지만 

이번에는 findById 메서드를 이용하면 됩니다. 

 

 

조회

@GetMapping("/member/{id}")
    public String findById(@PathVariable Long id, Model model) {
        MemberDTO memberDTO = memberService.findById(id);
        // login 처럼 return 값에 따라 분류 할 수 있음
        model.addAttribute("member", memberDTO);
        return "detail";
    }
//MemberController.class

memberService쪽으로 가서 

   public MemberDTO findById(Long id) {
        // 하나 조회할때 optional로 감싸줌
        Optional<MemberEntity> optionalMemberEntity = memberRepository.findById(id);
        if (optionalMemberEntity.isPresent()){
            return MemberDTO.toMemberDTO(optionalMemberEntity.get()); // optional을 벗겨내서 entity -> dto 변환
        }else {
            return null;
        }


    }

memberRepository에서 id를 찾아 올 수 있도록 구현 하겠습니다. 

이전에 한번 설명 한 것과 마찬가지로 DTO로 Controller에 보내기 위해 

optional 를 get으로 벗겨내로 toMemberDTO메서드로 Entity -> DTO로 변환해줍니다. 

 

 

 

 

삭제

@GetMapping("/member/delete/{id}") // /member/{id}로 할 수 있도록 공부
    public String deleteById(@PathVariable Long id){
        memberService.deleteByid(id);

        return "redirect:/member/"; // list 로 쓰면 껍데기만 보여짐
    }
 //MemberController.class

주의 해야 할 점이 return 을 list페이지로 단순히 보내버리면 

가져온 정보 없이 껍대기만 출력되므로 

redirect:/member/ 를 이용합니다. 

 

 public void deleteByid(Long id) {
        memberRepository.deleteById(id);
    }
//MemberService.class

 

list.html 을 수정 해주겠습니다. 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<h2>list.html</h2>
<table>
  <tr>
    <th>id</th>
    <th>memberEmail</th>
    <th>memberPassword</th>
    <th>memberName</th>
    <th>상세조회</th>
    <th>삭제</th>
  </tr>
  <tr th:each="member: ${memberList}">
    <td th:text="${member.id}"></td>
    <td th:text="${member.memberEmail}"></td>
    <td th:text="${member.memberPassword}"></td>
    <td th:text="${member.memberName}"></td>
    <td>
      <!-- query string /member?id=1
          rest api /member/1 -->
      <a th:href="@{|/member/${member.id}|}">조회</a>
    </td>
    <td>
      <a th:href="@{|/member/delete/${member.id}|}">삭제</a>
    </td>
  </tr>
</table>
</body>
</html>

 

조회 페이지 detail.html을 만들겠습니다. 

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>
  <meta charset="UTF-8">
  <title>detail</title>
</head>
<body>
<table>
  <tr>
    <th>id</th>
    <th>email</th>
    <th>password</th>
    <th>name</th>
  </tr>
  <tr>
    <td th:text="${member.id}"></td>
    <td th:text="${member.memberEmail}"></td>
    <td th:text="${member.memberPassword}"></td>
    <td th:text="${member.memberName}"></td>
  </tr>
</table>
</body>
</html>

 

 

이상으로 회원 정보 조회 및 삭제를 간단하게 구현 해보았습니다.