Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

KSI일기장

0502spring 게시판(2) 글 상세조회 본문

Spring

0502spring 게시판(2) 글 상세조회

MyDiaryYo 2023. 5. 2. 15:31

 

 

오타수정

boardList.jsp

BoardController

	//게시판 상세 조회
	@GetMapping("/detail/{boardCode}/{boardNo}")
	public String boardDetail(@PathVariable("boardCode") int boardCode,
							@PathVariable("boardNo") int boardNo,
							@RequestParam(value="cp", required = false, defaultValue = "1") int cp,
							Model model) {
		
		//게시글 상세조회 서비스 호출
		BoardDetail detail = service.selectBoardDetail(boardNo);
        //클릭한 해당 게시판의 게시물번호(boardNo)에 대한거 조회해야 하기 때문에 boardNo만 넘겨준다
        //boardCode는 게시판 조회시 들어가있는 값이기 때문에 
        //그게시판에 어떤 게시물이든 똑같은 값이어서 게시물 조회시에는 따로 안넣어줘도 된다
		
		
		model.addAttribute("detail", detail);
		
		return "board/boardDetail";
        // WEB-INF/views/board/boardDetail
		
		
	}

BoardService

/**게시글 상세 조회 서비스
	 * @param boardNo
	 * @return
	 */
	BoardDetail selectBoardDetail(int boardNo);

BoardServiceImpl

//게시글 상세조회
	@Override
	public BoardDetail selectBoardDetail(int boardNo) {
		return dao.selectBoardDetail(boardNo);
	}

BoardDAO

/**게시판 상세 조회 DAO
	 * @param boardNo
	 * @return
	 */
	public BoardDetail selectBoardDetail(int boardNo) {

		return sqlSession.selectOne("boardMapper.selectBoardDetail", boardNo);
	}

board-mapper.xml

<!-- 게시글 코드,이름 resultMap -->
	<resultMap type="boardType" id="boardType_rm">
		<id property="boardCode" column="BOARD_CD" />
		<result property="boardName" column="BOARD_NM" />
	</resultMap>



	<!-- 게시글 목록용 resultMap -->
	<resultMap type="board" id="board_rm">
		<id property="boardNo" column="BOARD_NO" />
		<result property="boardTitle" column="BOARD_TITLE" />
		<result property="createDate" column="CREATE_DT" />
		<result property="readCount" column="READ_COUNT" />
		<result property="memberNickname" column="MEMBER_NICK" />
		<result property="thumbnail" column="THUMBNAIL" />
	</resultMap>
	
	
	
	<!-- 게시글 상세 조회용 resultMap -->
	<resultMap type="detail" id="detail_rm">
		<id property="boardNo" column="BOARD_NO" />
		
		<result property="boardTitle" column="BOARD_TITLE" />
		<result property="boardContent" column="BOARD_CONTENT" />
		<result property="createDate" column="CREATE_DT" />
		<result property="updateDate" column="UPDATE_DT" />
		<result property="readCount" column="READ_COUNT" />
		<result property="memberNickname" column="MEMBER_NICK" />

		<result property="memberNo" column="MEMBER_NO" />
		<result property="profileImage" column="PROFILE_IMG" />
		<result property="boardName" column="BOARD_NM" />
		
		<collection property="imageList" column="BOARD_NO"
		 javaType="java.util.ArrayList" ofType="boardImage" select="selectImageList"></collection>
	</resultMap>
	<!-- ***ofType="boardImage" -> mybatis의 별칭*** -->
	
	
	<!-- selectImageList의 조회결과를 모두 BoardDetail VO의 List<BoardImage> imageLsit필드에 담겠다 
	  -> imageList에 담기위한 ArrayList<BoardImage>객체를 생성
	  (javaType="java.util.ArrayList" ofType="boardImage")
	  ->selectImageList태그 수행 시 필요한 파라미터
	  현재 resultMap (datail_rm)의 BOARD_NO컬럼에 저장된 값을 전달하겠다
	  
	  게시글상세조회 후 detail_rm resultMap 호출됬을 때
	  상세조회 결과 중 BOARD_NO를 이용해서 selectImageList를 수행하고
	  결과를 List<BoardImage> imageLsit필드에 세팅한다는 의미
	
	-->
	
	
	
	<!-- 이미지 정보 조회용 resultMap -->
	<resultMap type="boardImage" id="boardImage_rm">
		<id property="imageNo" column="IMG_NO" />
		<result property="imageReName" column="IMG_RENAME" />
		<result property="imageOriginal" column="IMG_ORIGINAL" />
		<result property="imageLevel" column="IMG_LEVEL" />
		<result property="boardNo" column="BOARD_NO" />
	</resultMap>
	
	
	<!-- 특정 게시글 이미지 목록 조회 -->
	<select id="selectImageList" resultMap="boardImage_rm">
		SELECT * FROM BOARD_IMG
		WHERE BOARD_NO = #{boardNo}
		ORDER BY IMG_LEVEL
	</select>
	<!-- ***id="selectImageList" == 위 select="selectImageList"**** -->
	
    
    
    <select id="selectBoardDetail" resultMap="detail_rm">
		SELECT BOARD_NO, BOARD_TITLE, BOARD_CONTENT,
		TO_CHAR(CREATE_DT, 'YYYY"년" MM"월" DD"일" HH24:MI:SS') CREATE_DT,
		TO_CHAR(UPDATE_DT, 'YYYY"년" MM"월" DD"일" HH24:MI:SS') UPDATE_DT,
		READ_COUNT, MEMBER_NICK, MEMBER_NO, PROFILE_IMG,
		BOARD_NM
		FROM BOARD
		JOIN MEMBER_S USING(MEMBER_NO)
		JOIN BOARD_TYPE USING(BOARD_CD)
		WHERE BOARD_NO = ${boardNo}
		AND BOARD_ST = 'N'
	</select>