list.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>관리자 회원 관리</title>
<style>
.list table {
width: 100%;
border-collapse: collapse;
}
.list table th, .list table td {
border: solid 1px #000;
}
</style>
</head>
<body>
<h1>관리자 회원 관리</h1>
<div>
<a href="/admin/main.do">관리자 메인</a>
|
<a href="/admin/member/list.do">회원 관리</a>
|
<a href="#">카테고리 관리</a>
|
<a href="#">강의 관리</a>
|
<a href="/member/logout">로그아웃</a>
<br/>
</div>
<div class="list">
<table>
<thead>
<tr>
<th>NO</th>
<th>
아이디(이메일)
</th>
<th>
이름
</th>
<th>
연락처
</th>
<th>
이메일 인증 여부
</th>
<th>
가입일
</th>
<th>
관리자 여부
</th>
</tr>
</thead>
<tbody>
<tr th:each="x : ${list}">
<td>1</td>
<td th:text="${x.userId}">kdew0308@naver.com</td>
<td th:text="${x.userName}">김이슬</td>
<td th:text="${x.phone}">010-1111-2222</td>
<td>
<p th:if="${x.emailAuthYn}">Y</p>
<p th:if="${x.emailAuthYn eq false}">N</p>
</td>
<td>
<p th:text="${x.regDt}">2021.01.01</p>
</td>
<td>
<p th:if="${x.adminYn}">Y</p>
<p th:if="${x.adminYn eq false}">N</p>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
MemberServiceImpl.java
@Override
public List<Member> list() {
return memberRepository.findAll(); // 회원 다 가져옴
}
AdminMemberController.java
@RequiredArgsConstructor
@Controller
public class AdminMemberController {
private final MemberService memberService;
@GetMapping("/admin/member/list.do")
public String list(Model model) {
List<Member> members = memberService.list();
model.addAttribute("list", members);
return "admin/member/list";
}
}
MemberService.java
/**
* 회원 목록 리턴(관리자 페이지에서만 사용 가능)
*/
List<Member> list();
application.yml
mybatis:
config-location: mybatis/**/*.xml
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
config-location
: mybatis/*/.xml : mybatis 경로가 어떻게 되든 xml파일을 설정map-underscore-to-camel-case
: true : underscore 부분을 camel로 자동으로 바꿔줌log-impl
: org.apache.ibatis.logging.stdout.StdOutImpl : log로 찍어줌resources - mybatis
디렉터리 생성 후 MemberMapper.xml
파일 생성
sql 구문 복사 붙여넣기
https://mybatis.org/mybatis-3/ko/getting-started.html
admin.mapper
폴더 안에 MemberMapper.java
인터페이스 생성 후 패키지 명 복사
namespace 부분이 인터페이스와 매칭되게 설정
MemberMapper.xml
안에 namespace
부분에 패키지명과 이름 수정
<mapper namespace="com.kdew.dewlms.admin.mapper.MemberMapper">
String Manipulation
: 자동으로 camel로 바꿔주는 plugin
MemberMapper.xml
파일에 resultType 부분에 붙여넣기<select id="selectList" resultType="com.kdew.dewlms.admin.dto">
MemberServiceImpl.java
에 MemberMapper와 MemberDto 추가private final MemberMapper memberMapper;
@Override
public List<MemberDto> list() {
MemberDto parameter = new MemberDto();
List<MemberDto> list = memberMapper.selectList(parameter);
return list;
//return memberRepository.findAll(); // 회원 다 가져옴
}
mybatis:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
yml 수정
수정
mybatis:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
mapper-locations: mybatis/**/*.
성공
list.html
에
<div class="list">
<div>
<form method="get">
<select name="searchType">
<option value="all">전체</option>
<option th:selected="${#strings.equals(param.searchType, 'userId')}" value="userId">아이디</option>
<option th:selected="${#strings.equals(param.searchType, 'userName')}" value="userName">이름</option>
<option th:selected="${#strings.equals(param.searchType, 'phone')}" value="phone">연락처</option>
</select>
<input th:value="${param.searchValue}" type="text" name="searchValue"/>
<button type="submit">검색</button>
</form>
</div>
추가
admin.model.MemberParam.java
public class MemberParam {
String searchType;
String searchValue;
}
list 수정
@GetMapping("/admin/member/list.do")
public String list(Model model, MemberParam parameter) {
List<MemberDto> members = memberService.list(parameter);
model.addAttribute("list", members);
return "admin/member/list";
}
MemberService.java
List<MemberDto> list(MemberParam parameter);
수정
MemberServiceImpl.java
수정
@Override
public List<MemberDto> list(MemberParam parameter) {
List<MemberDto> list = memberMapper.selectList(parameter);
return list;
//return memberRepository.findAll(); // 회원 다 가져옴
}
MemberMapper.java
수정List<MemberDto> selectList(MemberParam parameter);
searchType과 searchValue에서 null값이 뜸
@Data
추가