반응형
회원 검색 화면 구현
- 목록 생성
- 검색을 위한 입력창 및 버튼 생성
- 추가된 목록 확인
- 검색을 위한 입력창 및 버튼 확인
- get 방식으로 입력 확인
회원 검색 화면 테스트
- 전체로 검색한 경우
- ID(userId)로 검색한 경우
- 이름(userName)으로 검색한 경우
<form method="get">
<select name="searchType">
<option value="all">전체</option>
<option th:selected="${#strings.equals(param.searchType, 'userId')}" value="userId">ID</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="search" name="searchValue" placeholder="검색어 입력"/>
<button type="submit">검색</button>
회원 검색 기능 구현
package com.zerobase.fastlms.admin.model;
import lombok.Data;
@Data
public class MemberParam {
String searchType;
String searchValue;
}
public class AdminMemberController {
private final MemberService memberService;
@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";
}
}
package com.zerobase.fastlms.member.service;
import com.zerobase.fastlms.admin.dto.MemberDto;
import com.zerobase.fastlms.admin.model.MemberParam;
import com.zerobase.fastlms.member.model.MemberInput;
import com.zerobase.fastlms.member.model.ResetPasswordInput;
import org.springframework.security.core.userdetails.UserDetailsService;
import java.util.List;
public interface MemberService extends UserDetailsService {
boolean register(MemberInput parameter);
/**
* uuid에 해당하는 계정을 활성화 함.
*/
boolean emailAuth(String uuid);
/**
* 입력한 이메일로 비밀번호 초기화 정보를 전송
*/
boolean sendResetPassword(ResetPasswordInput parameter);
/**
* 입력받은 uuid에 대해서 password로 초기화 함
*/
boolean resetPassword(String id, String password);
/**
* 입력받은 uuid값이 유효한지 판단
*/
boolean checkResetPassword(String uuid);
/**
* 회원 목록 리턴(관리자에서만 사용 가능)
*/
List<MemberDto> list(MemberParam parameter);
}
@Override
public List<MemberDto> list(MemberParam parameter) {
List<MemberDto> list = memberMapper.selectList(parameter);
return list;
}
package com.zerobase.fastlms.admin.mapper;
import com.zerobase.fastlms.admin.dto.MemberDto;
import com.zerobase.fastlms.admin.model.MemberParam;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface MemberMapper {
List<MemberDto> selectList(MemberParam parameter);
}
<select id="selectList"
parameterType="com.zerobase.fastlms.admin.model.MemberParam"
resultType="com.zerobase.fastlms.admin.dto.MemberDto">
select *
from member
where 1 = 1
<if test="searchType != null and searchValue != null">
<choose>
<when test="searchType == 'uesrId'">
and user_id like concat('%', #{searchValue}, '%')
</when>
<when test="searchType == 'uesrName'">
and user_name like concat('%', #{searchValue}, '%')
</when>
<when test="searchType == 'phone'">
and phone like concat('%', #{searchValue}, '%')
</when>
<otherwise> <!-- 전제인경우 (all) -->
and
(
user_id like concat('%', #{searchValue}, '%')
or
user_name like concat('%', #{searchValue}, '%')
or
phone like concat('%', #{searchValue}, '%')
)
</otherwise>
</choose>
</if>
limit 0, 10
</select>
회원 검색 기능 테스트
- 전체 검색으로 '11' 검색한 결과
- ID 검색으로 '13' 검색한 결과
회원 검색 기능 세부 구현
<style>
.search-form {
padding: 5px 0 10px 0;
text-align: right;
}
<div class="list">
- 우측 정렬 및 간결 조절
<input th:value="${param.searchValue}" type="search" name="searchValue" placeholder="검색어 입력"/>
- '검색어 입력' placeholder 적용
<input th:value="${param.searchValue}" type="search" name="searchValue" placeholder="검색어 입력"/>
- input type='search' 변경
- 입력 중 'delete' 아이콘 노출
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 7-6. 회원 상세 목록 구현 (0) | 2022.02.24 |
---|---|
[Zero-base] 7-5. 회원 목록 페이징 처리 (0) | 2022.02.24 |
[Zero-base] 7-3. MyBatis 설정 및 쿼리 구현 (0) | 2022.02.24 |
[Zero-base] 7-2. 회원 목록 구현 (0) | 2022.02.23 |
[Zero-base] 7-1. 관리자 로그인 (0) | 2022.02.22 |