회원 목록을 보는 페이지를 만든다
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 사용
-> 목록을 테이블 형태로 보여주기 위해

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