본문 바로가기
SpringBoot

[Spring Boot] jsp - controller - service - dao

by Yeoseungwon 2023. 11. 1.
728x90

 

jsp

<div class="state">
				<span>등록</span>
				<span id="countA"><c:out value="${countA}"/></span>
				<span>접수</span>
				<span id="countB"><c:out value="${countB}"/></span>
				<span>진행중</span>
				<span id="countC"><c:out value="${countC}"/></span>
				<span>반려</span>
				<span id="countD"><c:out value="${countD}"/></span>
				<span>완료</span>
				<span id="countE"><c:out value="${countE}"/></span>
</div>

 

 

controllers

@RequestMapping("/list.do")
	public String boardList(Locale locale, @ModelAttribute("searchVO") BoardManageVO vo, Model model , HttpServletRequest request) throws Exception {
		logger.debug("Call /manager/board/list.do");
		try {
			
			// 미인증 사용자에 대한 보안처리
			LoginVO loginVO = getAuthInfo();
			if( loginVO != null && !"".equalsIgnoreCase(loginVO.getUniqId()) ) {
				logger.debug("loginId={}", loginVO.getUniqId() );
				vo.setLoginId(loginVO.getUniqId());
				vo.setLoginNm(loginVO.getName());
				vo.setGroupId(loginVO.getGroupId());
				vo.setGroupCode(loginVO.getGroupCode());
			}else{
				return "index";
			}
			
			if(vo.getBoardId().equals("")) {
				BoardMasterVO bvo = new BoardMasterVO();
				bvo.setGroupId(loginVO.getGroupId());
				List boardList = boardMasterService.groupBoardList(bvo);
				if(null != boardList && boardList.size()>0) {
					Map board = (Map) boardList.get(0);
					vo.setBoardId(SF_StringUtil.isNullToString(board.get("board_id")));
				}else {
					return "index";
				}
			}
			
			BoardMasterVO masterVO = new BoardMasterVO();
			masterVO.setBoardId(vo.getBoardId());
			masterVO.setGroupId(vo.getGroupId());
			Map boardMasterVO = boardMasterService.selectBoardMaster(masterVO);
			
			if(SF_StringUtil.isNullToString(boardMasterVO.get("notice_at")).equals("Y")) {
				vo.setNoticeUse(true);
				vo.setSearchNoticeAt("Y");
				Map noticeList = boardManageService.selectArticleList(vo);
				model.addAttribute("noticeList", noticeList.get("resultList"));
				vo.setSearchNoticeAt("N");
			}else {
				vo.setSearchNoticeAt("");
			}
			
			Map resultMap = boardManageService.selectArticleList(vo);
			
			List<Map> boardList = (List<Map>) resultMap.get("resultList");
			List<Map> resultList = new ArrayList();
			for(Map result : boardList) {
				
				String fileId = SF_StringUtil.isNullToString(result.get("atch_file_id"));
				if(!fileId.equals("")) {
					FileVO fileVO = new FileVO();
					fileVO.setAtchFileId(fileId);
					FileVO fileInfo = fileService.selectBoardFileList(fileVO);
					result.put("fileList", fileInfo.getFileList());
					result.put("imgFileList", fileInfo.getImgFileList());
					result.put("atchFileList", fileInfo.getAtchFileList());
				}
				
				resultList.add(result);
			}
		
			
			//
			// 상태별 카운트 가져오기
			BoardManageVO cntVO = new BoardManageVO(); 
			cntVO.setGroupId(vo.getGroupId());
			cntVO.setBoardId(vo.getBoardId());
            
            
			cntVO.setSearchState("A");
	          long countA = boardManageService.selectStateCnt(cntVO);
			
			  cntVO.setSearchState("B");
			  long countB = boardManageService.selectStateCnt(cntVO);
			  
			  cntVO.setSearchState("C");
			  long countC = boardManageService.selectStateCnt(cntVO); 
			  
			  cntVO.setSearchState("D");
			  long countD = boardManageService.selectStateCnt(cntVO); 
			  
			  cntVO.setSearchState("E");
			  long countE = boardManageService.selectStateCnt(cntVO);
			 

	        
	     // 상태별 카운트 모델에 추가
	        model.addAttribute("countA", countA);
	        model.addAttribute("countB", countB);
	        model.addAttribute("countC", countC);
	        model.addAttribute("countD", countD);
	        model.addAttribute("countE", countE);
			
	        System.out.println("컨트롤러 출력 : " + countA);
	        
		        
			
			model.addAttribute("resultList", resultList);
			model.addAttribute("resultCnt", resultMap.get("resultCnt"));
			model.addAttribute("pagination", resultMap.get("pagination"));
			
			model.addAttribute("boardMasterVO", boardMasterVO);

		} catch (Exception|Error e) {
			logger.error(e);
		}
		return "manager/board/list";
	}

 

 

vo랑 중복되지 않도록 cntVO를 새로 생성

BoardManageVO cntVO = new BoardManageVO();

 

cntVO.setSearchState("A");

long countA = boardManageService.selectStateCnt(cntVO);

 

>>state 가 A 일 때 서비스로 A를 보냄 

 

---  service --

public long selectStateCnt(BoardManageVO vo) throws Exception {
		logger.info("서비스"+vo.getSearchState());
		System.out.println("서비스"+vo.getSearchState());
		return boardManageDAO.selectStateCnt(vo);
	}

 

컨트롤러에서 어떤값을 받았는지 확인 vo.getSearchState() 하면

컨트롤러에서 받은 값이 출력된다. 

 

그리고 DAO로 A를 보낸다. 

 

--DAO--

public long selectStateCnt(BoardManageVO vo) {
        System.out.println("DAO :"+vo.getSearchState());
		long resultCnt = 0;

		// 상세코드 전체삭제
		Query query = new Query();

		 query.addCriteria(Criteria.where("group_id").is(vo.getGroupId()));
		 query.addCriteria(Criteria.where("del_yn").is("N"));
		 query.addCriteria(Criteria.where("board_id").is(vo.getBoardId()));

//System.out.println("DAO !vo.getSearchState().equals(\"\"):"+!vo.getSearchState().equals(""));오류뜨네
System.out.println("셀렉트 : " + query.addCriteria(Criteria.where("state").is(vo.getSearchState())));

		if (!vo.getSearchState().equals("")) {
			query.addCriteria(Criteria.where("state").is(vo.getSearchState()));
		}

		try {
			// 개수
			resultCnt = mongoTemplate.count(query, Map.class, BOARD_COLLECTION);
		} catch (Exception e) {
			logger.error(e);
		}

		return resultCnt;
	}

 

서비스에서 받은 A를 DAO에서 받아 데이터베이스에서 셀렉트 해야된다. 

DAO에서도 마찬가지로 vo.getSearchState() 하면

 

A가 출력된다. 

 

A를 데이터베이스에서 셀렉트 해야한다. 

System.out.println("DAO !vo.getSearchState().equals(\"\"):"+!vo.getSearchState().equals(""));

결과는 true 이기 때문에 조건문 실행된다. 

 

 

//음 밑에 프린트 오류뜨네 

System.out.println("셀렉트 : " + query.addCriteria(Criteria.where("state").is(vo.getSearchState())));

 

where절에서 state의 A값을 셀렉한다. 

 

 

 

 

System.out.println("DAO count : " + mongoTemplate.count(query, Map.class, BOARD_COLLECTION));

 

state의 A 값은 총 0개 이므로 resultCnt 에 담아 리턴한다. 

 

그럼 컨트롤러로 0이 전달된다. 

 

 

 

 

 

컨트롤러에서 A만 보냄

 

 

ABCDE 를 모두 컨트롤러에 적용시키면 한꺼번에 연산된다. 

 

 

 

최종 화면 출력값

728x90

'SpringBoot' 카테고리의 다른 글

[Spring Boot] jstl 로 스크립트 줄이기  (0) 2023.11.03
jsp 스크립트 sec:authorize access  (0) 2023.11.02
어노테이션  (0) 2023.09.22
MVC  (0) 2023.09.22
프로젝트 구조  (0) 2023.09.22