09009
[Spring Boot] 회원 연습 (5) - 회원 목록 출력하기, 상세조회 본문
회원 목록 출력
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h2>Hello Spring Boot!!</h2>
<a href="/member/save">회원가입</a>
<a href="/member/login">로그인</a>
<a href="/member/">회원목록</a>
</body>
</html>
MemberController

@GetMapping("/member/")
public String findAll(Model model) {
List<MemberDTO> memberDTOList = memberService.findAll();
// 어떠한 html로 가져갈 데이터가 있다면 model을 사용한다.
model.addAttribute("memberList", memberDTOList);
return "list";
}
MemberService
!! 중요 : repository에 관련된 것은 무조건 entity 객체로 주고받게 된다
!! 지금까지 entity 객체를 dto로 변환하는 작업은 entity가 하나고 dto 하나로 변환할 때 사용하는 것
이제는 entity가 여러 개 담긴 리스트 객체를 dto가 여러 개 담긴 리스트 객체로 옮겨 담아야 한다.
public List<MemberDTO> findAll() {
// findAll() -> repository가 제공해주는 메서드
// !! 중요 : repository에 관련된 것은 무조건 entity 객체로 주고받게 된다 -> 컨트롤러로 보내려면 dto로 변환해야함
List<MemberEntity> memberEntityList = memberRepository.findAll();
// 담아갈 객체를 생성
List<MemberDTO> memberDTOList = new ArrayList<>();
// memberEntityList에 있는 것을 하나하나 꺼내서 memberDTOList 하나하나씩에 옮겨 담는 과정이 필요하다
for (MemberEntity memberEntity : memberEntityList) {
// memberDTOList : dto 객체를 담기 위한 리스트
memberDTOList.add(MemberDTO.toMemberDTO(memberEntity));
// MemberDTO memberDTO = MemberDTO.toMemberDTO(memberEntity);
// memberDTOList.add(memberDTO);
}
return memberDTOList;
}
list.html 생성
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>list</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>
<!-- memberList: 리스트, member: 임의로 지정한 각각 변수 -->
<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>
<a th:href="@{|/member/${member.id}|}">조회</a>
</td>
<td>
<a th:href="@{|/member/delete/${member.id}|}">삭제</a>
</td>
</tr>
</table>
</body>
</html>
조회, 삭제 버튼은 나중에
여기까지 코드 작성하고 실행해보기

회원 상세 조회
@{| |} : 타임리프에서 지원하는 문법, 경로 상에 model값 (서버에서 가져오는 데이터)을 같이 표현하고자 할 때 사용
MemberController
@PathVariable : rest api와 같은 주소 체계 (ex : /member/1 )를 사용할 때는 이 어노테이션을 사용한다.

@GetMapping("/member/{id}")
public String findById(@PathVariable Long id, Model model) {
MemberDTO memberDTO = memberService.findById(id);
model.addAttribute("member", memberDTO);
return "detail";
}
MemberService
optional 객체를 get()으로 entity 객체로 변환 → entity 객체를 dto로 변환해서 컨트롤러에 넘겨줘야하는게 원리
public MemberDTO findById(Long id) {
Optional<MemberEntity> optionalMemberEntity = memberRepository.findById(id);
if (optionalMemberEntity.isPresent()) {
// dto로 변환시켜서 컨트롤러에 넘겨줘야함
// MemberEntity memberEntity = optionalMemberEntity.get();
// MemberDTO memberDTO = MemberDTO.toMemberDTO(memberEntity);
// return memberDTO;
return MemberDTO.toMemberDTO(optionalMemberEntity.get());
} else {
return null;
}
}
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>
'Back-End > Spring' 카테고리의 다른 글
| [Spring Boot] 회원 연습 (7) - 회원 삭제하기, 로그아웃 (0) | 2024.01.22 |
|---|---|
| [Spring Boot] 회원 연습 (6) - 회원정보 수정 (0) | 2024.01.22 |
| [Spring Boot] 회원 연습 (4) - 로그인 (0) | 2024.01.22 |
| [Spring Boot] 회원 연습 (3) - 회원가입 완료하기 (0) | 2024.01.22 |
| [Spring Boot] 회원 연습 (2) - 회원가입 DB 연동하기 (0) | 2024.01.22 |
