10. 회원 목록

kdew0308·2023년 3월 30일
0

학습 관리 시스템

목록 보기
10/17

1. 회원 목록 구현

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();

2. mybatis 설정 및 구현

2-1) 라이브러리 가져오기

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로 찍어줌

2-2) mybatis 디렉터리 생성

  1. resources - mybatis 디렉터리 생성 후 MemberMapper.xml파일 생성

  2. sql 구문 복사 붙여넣기
    https://mybatis.org/mybatis-3/ko/getting-started.html

  1. admin.mapper폴더 안에 MemberMapper.java인터페이스 생성 후 패키지 명 복사

  2. namespace 부분이 인터페이스와 매칭되게 설정
    MemberMapper.xml안에 namespace부분에 패키지명과 이름 수정

<mapper namespace="com.kdew.dewlms.admin.mapper.MemberMapper">

2-3) admin.MemberDto.java

String Manipulation : 자동으로 camel로 바꿔주는 plugin

  1. 패키지명 복사해서 MemberMapper.xml파일에 resultType 부분에 붙여넣기
<select id="selectList" resultType="com.kdew.dewlms.admin.dto">
  1. 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(); // 회원 다 가져옴
}

에러1) 에러 발생 후 해결

mybatis:

  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

yml 수정

에러 2)

수정

mybatis:
  configuration:
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: mybatis/**/*.

성공

3. 검색

3-1) list.html

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>

추가

3-2) MemberParam

admin.model.MemberParam.java

public class MemberParam {

    String searchType;
    String searchValue;
}

3-3) AdminMemberController

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 추가

해결



0개의 댓글

관련 채용 정보