본문 바로가기

코딩 국비수업들으며 느끼는점

팀플 마지막 단계

public Map<String, Object> getProfileSkillList(int currentPage) {
		// 보여질 행의 갯수
				int rowPerPage = 10;

				// 페이지 계산(시작될 행의 인덱스)
				int startIndex = (currentPage - 1) * rowPerPage;

				// 마지막 페이지 계산
				// 1. 보여질 테이블의 전체 행의 갯수
				double rowsCnt = adminProfileSkillMapper.getSkillCnt();
				// 2. 마지막 페이지
				int lastPage = (int) Math.ceil(rowsCnt / rowPerPage);

				int startPageNum = 1;
				int endPageNum = (lastPage < 10) ? lastPage : 10;

				// 동적페이지 구성 (7page 부터)
				if (lastPage > 10 && currentPage > 6) {
					startPageNum = currentPage - 5;
					endPageNum = currentPage + 4;
					if (endPageNum >= lastPage) {
						startPageNum = lastPage - 9;
						endPageNum = lastPage;
					}
				}

				//HashMap<String, object> 여러 데이터타입을 담을 수 있는 Map<> 이라는 객체를 생성한다. 
				Map<String, Object> paramMap = new HashMap<String, Object>();
				paramMap.put("startIndex", startIndex);
				paramMap.put("rowPerPage", rowPerPage);

				// 화면에 보여질 로그인 이력 데이터
				List<Map<String, Object>> profileSkillList = adminProfileSkillMapper.getProfileSkillList(paramMap);
				log.info("자격증 전체 목록: {}", profileSkillList);

				// controller에 전달될 data
				paramMap.clear(); // map 객체안의 data 초기화
				paramMap.put("lastPage", lastPage);
				paramMap.put("profileSkillList", profileSkillList);
				paramMap.put("startPageNum", startPageNum);
				paramMap.put("endPageNum", endPageNum);

				return paramMap;
	}

 

@GetMapping("/adminProfileSkillList")
	@SuppressWarnings("unchecked") // unchecked로 되어있으면 데이터타입을 체크 안한다는 뜻
	public String profileSkillList(Model model, @RequestParam(value="currentPage", required=false, defaultValue="1") int currentPage) {
		
		Map<String, Object> resultMap = adminProfileService.getProfileSkillList(currentPage);
		List<Map<String, Object>> profileSkillList = (List<Map<String, Object>>) resultMap.get("profileSkillList");
		int lastPage = (int) resultMap.get("lastPage");
		int startPageNum = (int) resultMap.get("startPageNum");
		int endPageNum = (int) resultMap.get("endPageNum");
		
		model.addAttribute("title", "보유 기술 관리");
		model.addAttribute("currentPage", currentPage);
		model.addAttribute("lastPage", lastPage);
		model.addAttribute("profileSkillList", profileSkillList);
		model.addAttribute("startPageNum", startPageNum);
		model.addAttribute("endPageNum", endPageNum);
		
		return "admin/profile/adminProfileSkillList";
	}