Spring Boot 시작하기 (4)

최민영·2024년 9월 13일

IntelliJ

목록 보기
11/30

회원 목록을 보는 페이지를 만든다

1) index.html에 "/member/"를 주소로 하는 '회원목록' 버튼 생성

<a href="/member/">회원목록</a>

2) "/member/" 주소 GetMapping

@GetMapping("/member/")
    public String findAll(Model model) {
        List<MemberDTO> memberDTOList = memberService.findAll();
        model.addAttribute("memberList", memberDTOList);
        return "list";
    }

-> Model 객체는 org.springframework.ui 에서 가져오기
-> 목록의 형태로 가져오기 때문에 List라는 배열을 사용 (java.util)
-> memberService에 findAll 함수 만들기

3) memberService에 findAll 함수 작성하기

-> memberRepository.findAll() 함수는 이미 있는 함수
-> List 형태의 MemberDTO를 List 형태의 MemberEntity로 바꾸어야 됨 => 리스트 멤버를 하나하나 꺼내서 담아주는 작업이 필요 (for-each 반복)
-> memberEntity를 memberDTO로 변환하고 memberDTOList에 add

 public List<MemberDTO> findAll() {
        List<MemberEntity> memberENtityLIst = memberRepository.findAll();
        List<MemberDTO> memberDTOList = new ArrayList<>();
        for(MemberEntity memberEntity : memberENtityLIst) {
            memberDTOList.add(MemberDTO.toMemberDTO(memberEntity));
            //MemberDTO memberDTO = MemberDTO.toMemberDTO(memberEntity);
            //memberDTOList.add(memberDTO);
        }
        return memberDTOList;
    }

4) MemberController에 "/member/" 주소 Get 하기

@GetMapping("/member/")
    public String findAll(Model model) {
        List<MemberDTO> memberDTOList = memberService.findAll();
        model.addAttribute("memberList", memberDTOList);
        return "list";
    }

5) 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>

-> thymeleaf 사용
-> 목록을 테이블 형태로 보여주기 위해

사용
-> 'th:each'는 thymeleaf에서 사용할 수 있게 해주는 for-each 구문 => 각각의 변수를 member.(필드명)으로 접근 가능

회원목록 버튼을 누르고 list.html로 넘어갔을 때의 화면
현재는 DB에 회원이 한 명이라 한 줄만 뜬다

0개의 댓글