[spring 팀프로젝트] - 웹사이트 제작 11. 관리자 페이지 - (1)검색 기능

JINI·2022년 12월 12일
0
post-thumbnail

로그인후 사용자에겐 예약하기 메뉴가 보이지만 관리자에겐 회원목록 메뉴가 보이고 회원 정보를 삭제할 수 있는 권한이 있다.
회원 아이디 검색 기능이있고 일부 단어를 입력하면 검색 단어를 포함한 아이디를 보여준다.

관리자 페이지도 크게 다르진 않지만 사용자가 할 수 없는 권한을 가지고 있다.
❗회원/예약 목록을 볼 수 있지만 게시판과 다르지 않기 때문에 생략한다.


✂️관리자 로그인 후 메인페이지

관리자 전용 계정으로 로그인시 회원목록 메뉴가 보여진다.


🧩검색 기능

🎨jsp

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

📕Controller

@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로 보내고 없다면 회원 목록 페이지를 보여준다.


📕Service/serviceImpl

	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를 사용했다.


📕mapper.java

public ArrayList<memberDTO> searchId(@Param("userId")String userId, @Param("s") int start, @Param("e") int end);

public Integer selectSearchIdCount(String userId);

📕mapper.xml

//검색
<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} 을 같이 사용하기 위해서 || 를 사용해야한다.


profile
꾸준히 성장하는 개발자

0개의 댓글