본문 바로가기

Spring boot/3차 프로젝트 중 알게 된 것!

[3차 프로젝트]게시판 또는 게시판 그룹 별 게시판/게시글 개수 세서 프론트에 보내주기

게시판/게시판 그룹 별 게시글 개수/게시판 개수를 세는건 db에 테이블도 따로 있어서 다른 방법으로 했는데 게시판 그룹 기능을 나중에 추가하려다 보니 기능 내에서 갯수를 세는 걸 추가하게 되었다.

db와 연동해서 출력하는 코드는 정리하면서 다음글에 올릴예정!

 

현재 프로젝트의 계층구조

 

 

BoardController.java

// ######## 게시판 그룹 목록 조회 ########
@GetMapping("/intranet/board_group/list")
public String boardgroupList(@ModelAttribute("params") BoardGroupVo params, Model model) {
    List<BoardGroupVo> boardgroupList = boardGroupService.retrievePageBoardGroupList(params);

    for (BoardGroupVo boardgroup : boardgroupList) {
        int groupNo = boardgroup.getGroupNo();
        int boardCount = boardService.retrieveBoardGroupCount(groupNo);
        boardgroup.setBoardCount(boardCount);
    }
    // DB에 없으니까 여기서 게시판 그룹에 속한 게시판 개수 세줌
    model.addAttribute("boardgroupList", boardgroupList);

    return "page/intranet/board_group_list";
}

(위아래 코드는 생략했다)

 

게시판 개수를 세는 기능을 추가하기 위해서 boardgroup이 아닌 BoardService, Dao, DaoImpl, mapper에 코드를 추가했다

추가한 코드는 다음과 같다

 

BoardDao.java

//게시판 그룹별 게시판 개수 조회
int selectBoardGroupCount(int groupNo);

 

BoardDaoImpl.java

//게시판 그룹별 게시판 개수 조회
@Override
public int selectBoardGroupCount(int groupNo) {
    return this.sqlSessionTemplate.selectOne("BoardDao.selectBoardGroupCount", groupNo);
}

 

BoardService.java

// 게시판 그룹별 게시판 개수 조회
int retrieveBoardGroupCount(int groupNo);

 

BoardServiceImpl.java

//게시판 그룹별 게시판 개수 조회
@Override
public int retrieveBoardGroupCount(int groupNo) {
    return this.boardDao.selectBoardGroupCount(groupNo);
}

 

BoardMapper-xml

<!--게시판 그룹별 게시판 개수 조회 -->
<select id="selectBoardGroupCount" parameterType="int" resultType="int">
   SELECT COUNT(*) FROM board WHERE bo_group_no = #{groupNo}
</select>

========================================================

 

 

 

// ######## 게시판 그룹 목록 조회 ########
@GetMapping("/intranet/board_group/list")
public String boardgroupList(@ModelAttribute("params") BoardGroupVo params, Model model) {
    List<BoardGroupVo> boardgroupList = boardGroupService.retrievePageBoardGroupList(params);

    for (BoardGroupVo boardgroup : boardgroupList) {
        int groupNo = boardgroup.getGroupNo();
        int boardCount = boardService.retrieveBoardGroupCount(groupNo);
        boardgroup.setBoardCount(boardCount);
    }
    // DB에 없으니까 여기서 게시판 그룹에 속한 게시판 개수 세줌
    model.addAttribute("boardgroupList", boardgroupList);

    return "page/intranet/board_group_list";
}

에로사항 및 for each문으로 boardgroupList 객체에 boardCount(게시판 개수)를 담아서 보내는 이유 :

처음 내 생각은 그냥 BoardController에 model.addAttribute("boardCount", boardCount); 만 추가해서 보내면 될줄 알았다. 그런데 이렇게 하면 값이 하나만 전달된다ㅠ. 내가 원하는건

----------------------------------------------------------------

게시판 그룹 1 | 해당게시판 그룹에 속한 게시판 개수

게시판 그룹 2 | 해당게시판 그룹에 속한 게시판 개수

게시판 그룹 3 | 해당게시판 그룹에 속한 게시판 개수

게시판 그룹 4 | 해당게시판 그룹에 속한 게시판 개수

-----------------------------------------------------------------

요런 식으로 출력되는 것이기 때문에 for each문으로 boardgroupList 객체에 값을 같이 담아서 보내줘야 한다!!

728x90