로그인후 사용자에겐 예약하기 메뉴가 보이지만 관리자에겐 회원목록 메뉴가 보이고 회원 정보를 삭제할 수 있는 권한이 있다.
회원 아이디 검색 기능이있고 일부 단어를 입력하면 검색 단어를 포함한 아이디를 보여준다.
관리자 페이지도 크게 다르진 않지만 사용자가 할 수 없는 권한을 가지고 있다.
❗회원/예약 목록을 볼 수 있지만 게시판과 다르지 않기 때문에 생략한다.❗
✂️관리자 로그인 후 메인페이지
관리자 전용 계정으로 로그인시 회원목록 메뉴가 보여진다.
<form action="${contextPath }/member/memberList" method="get">
<input class="inputId" type="text" name="id" value="${param.id }" placeholder="찾을 아이디 입력"> <input class="submitBtn" type="submit" value="아이디 검색">
</form>
@GetMapping("memberList")
public String memberList(Model model,@RequestParam(value="id", required=false) String id,
HttpSession session,@RequestParam(required = false, defaultValue = "1" ) int num) {
if(id != null) {
ms.searchId(model, id, num); //검색 기능
}else {
ms.memberInfoList(model,num);
}
return "member/memberList";
}
검색 기능은 회원 목록 페이지에 추가해야한다.
@RequestParam
으로 아이디, 세션, 페이징 변수를 가져오고 찾는 키워드가 있다면 model에 아이디와 페이징 변수를 담아 service로 보내고 없다면 회원 목록 페이지를 보여준다.
public void searchId(Model model, String userId, int num);
@Override
public void searchId(Model model, String userId, int num) {
int pageLetter = 5;
int allCount = memberMapper.selectSearchIdCount(userId);
int repeat = allCount / pageLetter;
if(allCount % pageLetter != 0) {
repeat += 1;
}
int end = num * pageLetter;
int start = end + 1 - pageLetter;
model.addAttribute("repeat", repeat);
model.addAttribute("memberList", memberMapper.searchId(userId, start, end));
}
}
검색 기능은 키워드를 포함해 모두 찾아야 하기 때문에 count를 사용했다.
public ArrayList<memberDTO> searchId(@Param("userId")String userId, @Param("s") int start, @Param("e") int end);
public Integer selectSearchIdCount(String userId);
//검색
<select id="searchId" resultMap="member">
select B.* from(select rownum
rn, A.* from
(select * from box_member where buser_id like
'%'||#{userId}||'%'
order by buser_id asc)A)B where rn between #{s} and
#{e}
</select>
<select id="selectSearchIdCount" resultType="Integer">
select count(*) from
box_member where buser_id like '%'||#{userId}||'%'
</select>
문자열 '%'
와 #{userId}
을 같이 사용하기 위해서 ||
를 사용해야한다.