KSI일기장
0502spring 게시판(2) 글 상세조회 본문
오타수정
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>
'Spring' 카테고리의 다른 글
0502spring 게시판(3) 글 조회수 증가, 중복제거 (0) | 2023.05.02 |
---|---|
jstl scope 4가지 종류 (0) | 2023.05.02 |
0501spring 게시판(1) 글 조회 (pagination(페이지번호) 포함) (0) | 2023.05.01 |
0501spring sql log출력, (0) | 2023.05.01 |
spring 파일업로드 중 에러springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactoryBean' defined in class with path resource (0) | 2023.04.29 |