muYe0ng
31
2021-11-13 20:36:21 작성 2021-11-13 20:42:56 수정됨
0
86

mysql 외래키를 매게체로 해당하는 값을 불러오는 방법?


개발을 배운지 얼마 안된 완전 초보입니다...ㅜ 


BoardReviewDTO.java 입니다. 아래의 getter setter는 너무 길어질 것 같아 날렸습니다.

public class BoardReviewDTO {
	private int board_review_seq;
	private String member_id;
	private int goods_seq;	
	private String board_review_subject;
	private String board_review_content;
	private String board_review_image;
	private String board_review_regit_date;
	private double board_review_score;
	public int getBoard_review_seq() {


BoardReviewController.java 입니다. 

@Controller
public class BoardReviewController{
	@Autowired
	private BoardReviewService boardReviewService;

    @RequestMapping(value = "**/selectBoardReview.do")
	public ModelAndView selectBoardReview(HttpServletRequest request) {

    	List<BoardReviewDTO> list = boardReviewService.selectBoardReview();
    	ModelAndView modelAndView = new ModelAndView();
    	modelAndView.addObject("list", list);
    	modelAndView.setViewName("board_review_List.jsp");
		return modelAndView;
	}

	@RequestMapping(value = "**/board_review_List.do")
	public ModelAndView store_category(HttpServletRequest request, MultipartFile board_review_image) {
		int pg = 1;
		if(request.getParameter("pg") != null){
			pg = Integer.parseInt(request.getParameter("pg"));
		}
		int totalA = boardReviewService.getTotalA(); // 총 글수
		int totalP = (totalA + 4) / 5; // 총 페이지 수
		if(pg > totalP) pg = totalP;
		
		int startPage = (pg - 1) / 3 * 3 + 1;
		int endPage = startPage + 2;
		if (endPage > totalP) endPage = totalP;
		
		int startNum = (pg-1)*5;
		int repeatNum = 5;
		List<BoardReviewDTO> list = boardReviewService.boardReviewList(startNum, repeatNum);		
		
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.addObject("pg", pg);
		modelAndView.addObject("totalP", totalP);
		modelAndView.addObject("startPage", startPage);
		modelAndView.addObject("endPage", endPage);		
		modelAndView.addObject("list", list);		
		modelAndView.setViewName("board_review_List.jsp");
		return modelAndView;
	}
}


boardReviewMapper.xml입니다

<mapper namespace="mybatis.boardReviewMapper">
    
    <select id="selectBoardReview" resultType="boardReview.dto">
		SELECT * FROM teamproject.board_review
    </select>
    
    <select id="getTotalA" resultType="int">
		select count(*) as cnt from board_review
	</select>
	
    <select id="boardReviewList" parameterType="java.util.Map" resultType="boardReview.dto">
    	<![CDATA[
    	select * 
		from (SELECT @ROWNUM := @ROWNUM + 1 AS ROWNUM, board_review.*
		FROM board_review,(SELECT @ROWNUM:=0) TMP
		where goods_seq = #{goods_seq}
		ORDER BY board_review_regit_date DESC, board_review_seq DESC) s
		ORDER BY s.ROWNUM LIMIT #{startNum}, #{repeatNum}
		]]>
    </select>
	
</mapper>


board_review_List.jsp 실질적으로 출력되는 페이지 이며 그안에 데이터 값을 불러오는 table코드만 가져왔습니다.

<table class="reviewView" align="center" >
		<tbody>
			<c:forEach items="${list}" var="dto">
				<tr>
					<td colspan="2">${dto.board_review_score}</td>
				</tr>					
				<tr>
					<td  >${dto.member_id} </td> 
					<td align="right" width="150"> ${dto.board_review_regit_date}</td>
				</tr>						
				<tr>
					<td colspan="2">${dto.board_review_subject}</td>
				</tr>						
				<tr >
					<td class="line" align="left"  >${dto.board_review_content}</td> 
					<td class="line" align="center" ><img alt="이미지" src=""> </td>
				</tr>												
			</c:forEach>
		</tbody>


상품 상세보기.jsp입니다. 이곳에서 goods_seq값을 받아와서 위의 board_review_List.jsp 에서 출력하고자 합니다

<td><a href = "../board_review/board_review_List.do?goods_seq=${dto.goods_seq}&pg=${pg}">리뷰</a></td>


상품들은 goods_seq로 구분되어 상세페이지로 구현되어 있는데 goods_seq에 따른 review들만 보여주고 싶은데 모든 review들이 출력되는 현상입니다. 그래서 boardReviewMapper.xml의 쿼리에 where goods_seq =#{goods_seq} 를 추가하고 가장 마지막 코드블럭처럼 코드화 하였는데 코드가 잘못되었는지 다른 부분이 부족하여 이와같은 결과가 나타나는지 궁금합니다.

코드가 길어서 죄송합니다...!

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.